如何创建、复制或复制粘贴整个边框控件,因为它的所有控件都位于其中

问题描述 投票:0回答:1

首先,我只是想指出,我的英语可能不好,对此我感到很抱歉。

**问题:**

我现在正在学习 .net Maui,我想了解如何做到这一点: 我想制作一个包含许多其他控件(如布局、标签和图像)的边框控件, 但我面临的问题是,我想创建这个特定的边框控件设计,以便我可以将其用作模板或像数据在 FlexLayout 控件内显示的基本表单一样,但如果我在 xaml 中创建此边框控件,我不知道如何复制它,或者如何复制它并多次粘贴我需要的所有数据,我使用 C# 以我创建的形式显示这些数据,现在我不知道我该怎么办,有什么方法可以做这样的事情,甚至如何做?

我希望你能帮我解决这件事,谢谢。

注意:我有一个想法,让所有这些边框控件都像一个新的自定义控件,包含使用 C# 的所有其他内容和控件,这样我每次想使用它时都可以使其只是它的一个实例,或者它的副本,每次都给出它需要的值,例如字符串名称或图像数据等。但这一切我什至不知道该怎么做。 因此,如果这可行,那么我不知道应该观看哪个教程或视频来学习这一点。

c# .net xaml controls maui
1个回答
0
投票

作为答案:

如何创建、复制或复制粘贴整个边框控件及其内部的所有控件

您可以使用

ContentView
来实现:

创建内容视图:

<ContentView xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiApp2.NewContent1"
             x:Name="this">

   <!--create control or layout you want-->
   <Border BindingContext="{x:Reference this}"
            Stroke="#C49B33"
            StrokeThickness="4"
            Background="#2B0B98"
            Padding="16,8"
            Margin="10"
            HorizontalOptions="Center">
       <Border.StrokeShape>
           <RoundRectangle CornerRadius="40,40,40,40" />
       </Border.StrokeShape>
       <VerticalStackLayout>
           <Label Text="{Binding Title}"
                   TextColor="White"
                   FontSize="18"
                   FontAttributes="Bold"/>
           <Image .../>
           ......
       </VerticalStackLayout>
   </Border>
</ContentView>

它包含使用 C# 的控件,因此每次我想使用它时,我都可以使其只是它的一个实例或它的副本,并且每次都为其提供所需的值,例如字符串名称或图像数据,

关于这一点,在后面的代码中使用BindableProperty来绑定数据:

public partial class NewContent1 : ContentView
{
    public static readonly BindableProperty TitleProperty = BindableProperty.Create(nameof(Title), typeof(string), typeof(NewContent1), string.Empty);
 
    public string Title
    {
        get => (string)GetValue(NewContent1.TitleProperty);
        set => SetValue(NewContent1.TitleProperty, value);
    }
 
    public NewContent1()
    {
        InitializeComponent();
    }
}

现在您可以在其他页面重复使用它:

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiApp2.NewPage3"
             xmlns:control="clr-namespace:MauiApp2"
             Title="NewPage3">
   <VerticalStackLayout>
       <control:NewContent1 Title="AAABBB"/>

       or use ViewModel to give it a value
       <control:NewContent1 Title="{Binding Name}"/>
       .....
   </VerticalStackLayout>
</ContentPage>

您也可以参考这个案例:.net MAUI DataTemplate's。父视图模型中的命令绑定,了解 ContentView 的更深入使用。

© www.soinside.com 2019 - 2024. All rights reserved.