gpt4 book ai didi

c# - 如何在 XAML 代码中创建支持其中其他元素的 UserControl

转载 作者:太空宇宙 更新时间:2023-11-03 22:30:04 24 4
gpt4 key购买 nike

我喜欢在我的 UserControl 中插入其他 FrameworkElements,但如果我在 XAML 代码中这样做,控件将无法正常工作。 (我需要制作像 Panel/Grid 类型的 control)。换句话说,它丢失了它的内容。如何解决这个问题呢?我找到了一些示例,但这些示例在 UWP 中不起作用。我想让下面的示例非常简单,以说明我的意思和需要。

XAML

<!--THE CONTROL-->
<local:TestControl Width="300" Height="300">
<!--LIKE TO ADD THIS ONE INSIDE THE CONTROL-->
<TextBlock Text="Some Text"></TextBlock>
</local:TestControl>

用于控制的 XAML

<UserControl
x:Class="MyApp.TestControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"

d:DesignHeight="300"
d:DesignWidth="400">

<Grid Background="DarkGray" BorderBrush="Black" BorderThickness="2" CornerRadius="10"></Grid>
</UserControl>

代码隐藏

namespace MyApp
{
public sealed partial class TestControl : UserControl
{
public TestControl()
{
this.InitializeComponent();
}
}
}

最佳答案

用模板化控件替换 UserControl

  1. 创建一个名为 TestControl 的类,该类继承自 ContentControl:

    public sealed class TestControl : ContentControl
    {
    public TestControl() => DefaultStyleKey = typeof(TestControl);
    }
  2. 在您的项目中创建一个themes 文件夹,并将名为generic.xamlResourceDictinonary 添加到该文件夹​​中。 themes/generic.xaml 名称对于框架能够找到它很重要。在此文件中,您为控件定义一个模板:

    <Style TargetType="local:TestControl">
    <Setter Property="Template">
    <Setter.Value>
    <ControlTemplate TargetType="local:TestControl">
    <Grid Background="DarkGray" BorderBrush="Black" BorderThickness="2" CornerRadius="10">
    <ContentPresenter />
    </Grid>
    </ControlTemplate>
    </Setter.Value>
    </Setter>
    </Style>
  3. 像以前一样创建一个控件实例:

    <local:TestControl Width="300" Height="300">
    <!--LIKE TO ADD THIS ONE INSIDE THE CONTROL-->
    <TextBlock Text="Some Text"></TextBlock>
    </local:TestControl>

TextBlock 将在 ControlTemplateContentPresenter 元素所在的位置结束。

请引用@Jerry Nixon 的MSDN Magazine article有关如何创建自定义控件的更多信息。

关于c# - 如何在 XAML 代码中创建支持其中其他元素的 UserControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58342388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com