繁体   English   中英

WPF 自定义控制的设置内容

[英]WPF Setting Content for Custom Control

在我的 WPF 应用程序中,我在多个页面上有多个标签,它们看起来都一样,但在程序运行期间可能会改变样式(一次全部)。

在网上搜索了很多之后,我浏览了 Window.Resources 模板和用户控件(在程序运行期间可能更改样式时,它们都不是很好的样式),目前已选择 CustomControl。 但是,我不知道如何设置它的内容。 有些标签会有一个带有多个孙子的包装面板,有些标签只有文字。 但是,无论哪种方式,我都无法解决。 这似乎是Label之外的程序。 我错过了什么?

我的控件(只是更改为从标签继承):

 public class MyControl : Label
    {
        static MyControl()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(MyControl), new FrameworkPropertyMetadata(typeof(MyControl)));
        }
    }

Themes.Generic.xaml 没有变化

我的 Window XAML (此处为测试目的设计):

<local:MyControl Height="100">
            <TextBlock Text="hi there" FontSize="60"></TextBlock>
            <!-- More children will be needed, but lets start with one for now -->
</local:MyControl>

<local:MyControl Height="100" Content="this should exist" FontSize="50" />

如何让该内容显示?

编辑:删除 DefaultStyleKeyProperty.OverrideMetadata 工作。

如果要在Themes/Generic.xaml中覆盖其DefaultStyleKeyProperty ,则应为自定义控件定义一个默认模板。 基于Label的默认模板:

<Style TargetType="{x:Type local:MyControl}" BasedOn="{StaticResource {x:Type Label}}"/>

或者,您可以删除DefaultStyleKeyProperty的覆盖并保留您的控件,如下所示:

public class MyControl : Label
{
    // No overriding
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM