WPF - Как применить стиль к нескольким элементам управления на панели - PullRequest
2 голосов
/ 02 июня 2011

Мне нужно применить стиль к различным элементам управления в панели стека.Все они имеют разные типы, т.е. TreeView, Listview, ComboBox и т. Д. Есть ли способ применить стиль на уровне StackPanel для применения к этим элементам управления.Я не хочу применять стиль индивидуально к этим элементам управления.Есть ли способ сделать это?

Спасибо ..

Ответы [ 2 ]

3 голосов
/ 02 июня 2011

Вы можете сделать это следующим образом, объявив Стили с помощью ресурсов 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>
0 голосов
/ 02 июня 2011

Как говорит Жан-Луи, вы можете указать Style в словаре ресурсов StackPanel, и он будет применяться только к соответствующим элементам в этом StackPanel.

Для того, чтобы иметь одинStyle соответствует всем вашим элементам управления, вам нужно указать его с TargetType общего базового класса для всех этих элементов управления, например Control

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

<!-- Controls here -->

</StackPanel>
...