Стиль WPF для панели / рамки с триггерами для детей / родителей? - PullRequest
1 голос
/ 27 января 2011

Возможно ли в XAML

  • Определить стиль для панели, которая создает границы для каждой панели?
  • Изменить стиль элемента-предка (то есть фон границы), когда выбран элемент или его дочерний элемент?

т.е.

<StackPanel Style="{StaticResource WidgetStyle}">
  <Label />
  <Button />
  <StackPanel>
    <ListView />
  </StackPanel>
</StackPanel>

Я бы хотел, чтобы WidgetStyle определил (округленную) границу и изменил цвет границы, например, если выбран ListView или Button.

Спасибо!

1 Ответ

1 голос
/ 27 января 2011

Боюсь, ответ на ваш первый вопрос - нет!Вы не можете шаблонировать элементы управления Panel, они не выглядят.Что вы могли бы сделать в этом.Есть несколько вариантов, таких как создание пользовательского элемента управления, который включает в себя StackPanel.Ответ на этот вопрос включает в себя довольно много хороших идей:

Изменение шаблона WPF StackPanel

Для второго вопроса, опять же, нет, вы не можете стилизовать предка на основеизменение стиля в дочернем элементе с помощью одного стиля.

Вы можете использовать привязку ElementName, чтобы соединить вместе некоторые свойства элементов:

<Border Background={Binding ElementName=MyButton, Path=Tag>>
  <StackPanel Style="{StaticResource WidgetStyle}">
    <Label />
    <Button x:Name="MyButton"/>
    <StackPanel>
      <ListView />
    </StackPanel>
  </StackPanel>
</Border>

В приведенном выше примере фон рамки привязан к тегу.Свойство кнопки «MyButton» позволяет затем применить к кнопке стиль, который устанавливает свойство Tag и, таким образом, меняет фон границы.

...