WPF-如何将样式应用于面板中的多个控件

本文关键字:控件 样式 应用于 WPF- | 更新日期: 2023-09-27 17:58:19

我需要将样式应用于Stack Panel中的不同控件。它们都是不同类型的,即TreeView、Listview、ComboBox等。有没有一种方法可以应用StackPanel级别的样式来适用于这些控件。我不想将样式单独应用于这些控件。有什么办法可以做到这一点吗?

谢谢。。

WPF-如何将样式应用于面板中的多个控件

您可以通过在StackPanel资源中声明样式来实现这一点。您必须在没有键的情况下声明每个样式,才能将它们自动应用于StackPanel中的每个目标控件。

<StackPanel>
     <StackPanel.Resources>
      <!-- Styles declared here will be scoped to the content of the stackpanel  -->
      <!-- This is the example of style declared without a key, it will be applied to every TreeView. Of course you'll have to add Setters etc -->
      <Style TargetType="TreeView">
      </Style>
     </StackPanel.Resources>
     <!-- Content -->
     <!-- This treeview will have the style declared within the StackPanel Resources applied to it-->
     <TreeView />
</StackPanel>

正如Jean-Louis所说,您可以在StackPanel资源字典中指定一个Style,它将仅应用于该StackPanel中的匹配元素。

为了使单个Style与所有控件匹配,您需要为所有控件指定一个公共基类的TargetType,例如Control

<StackPanel>
  <StackPanel.Resources>
    <Style TargetType="Control">
      <!-- Setters etc here -->
    </Style>
  </StackPanel.Resources>
<!-- Controls here -->
</StackPanel>