[英]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.