如何覆盖运行时创建的 wpf 控件中的应用程序样式

2024-05-12

我试图在运行时创建一个 WPF 控件,但我不知道如何让它忽略来自 App.xml 资源的样式。我尝试将样式设置为 null 并将 OverridesDefaultStyle 设置为 true 但没有成功。应用程序设置将前景设置为白色,我似乎无法明确将其设置为其他任何内容。

        Label tb = new Label();
        tb.OverridesDefaultStyle = true;
        tb.Style = null;
        tb.Foreground = new SolidColorBrush(Colors.Black);
        this.Children.Add(tb);

Edit:由于某种原因,我永远无法让标签工作,但当我切换到文本框时,它工作得很好。

谢谢你的回复。


您所要做的就是设置Style to null阻止它继承。然后你可以设置Foreground任何你喜欢的:

var tb = new TextBlock() { Text = "Hello" };
tb.Style = null;
tb.Foreground = Brushes.Blue;
this.Children.Add(tb);

如果这对你不起作用,我建议完全采取其他措施。

PS. Use Brushes.Black而不是创建自己的SolidColorBrush。不仅干净了,刷子也会被冻住。您的代码创建了一个未冻结的画笔,效率较低。您也可以通过致电自行冻结Freeze()在刷子上。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何覆盖运行时创建的 wpf 控件中的应用程序样式 的相关文章

随机推荐