c# - Style.TargetType、对话框和子类化 WPF 控件

标签 c# wpf xaml wpf-controls themes

假设我想将应用程序中所有 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/

相关文章:

c# - 向所有传出的 Refit 请求添加动态 header

c# - 如何将图像添加到我的应用程序

wpf - WPF 中 DataGridComboBoxColumn 的 ElementStyle 错误

wpf - WPF ListView 中部分显示项目的烦人自动滚动

wpf - 如何让 ScrollViewer 在 StackPanel 中工作?

c# - 如何禁用 Listview 自动查找您键入的内容

c# - 关注应用程序 - 与操作系统相关的问题?

c# - 如果对象被处理,则阻止 MouseLeave 触发器

c# - 获取 IP 地址 WPF 和 C# 显示问题

visual-studio - XAML : How to change background color only in Design mode?