假设我想将应用程序中所有 StackPanel 的背景设置为某种颜色。 我的 App.xaml 中有以下内容:
<Style TargetType="StackPanel">
<Setter Property="Background" Value="#222222" />
</Style>
这仅在 StackPanel 是纯 StackPanel 时有效,并且 StackPanel 必须在 App 下。但是,弹出对话框中 StackPanel 的子类或 StackPanel 的背景颜色不会因此而改变。例如:
public class MyStackPanel : StackPanel { ... }
解决子类化问题的一种方法是扩展 UserControl,并将 StackPanel 嵌入到 UserControl 中。只要您不需要访问 StackPanel 的属性就可以。
有什么想法吗?
制作 WPF 主题的最佳方式是什么?
最佳答案
您可以为您的自定义类创建一个继承自基类样式的隐式样式
<Style TargetType="StackPanel">
<Setter Property="Background" Value="#222222" />
</Style>
<Style TargetType="{x:Type local:MyStackPanel}"
BasedOn="{StaticResource {x:Type StackPanel}}" />
关于c# - Style.TargetType、对话框和子类化 WPF 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12304649/