【问题标题】:WPF style for panel/border with triggers for children/parent?带有子/父触发器的面板/边框的WPF样式?
【发布时间】:2011-01-27 05:38:44
【问题描述】:

在 XAML 中是否可以

  • 定义为每个面板创建边框的面板样式?
  • 当一个项目或其子项目被选中时,更改祖先项目的样式(即边框背景)?

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

我想让 WidgetStyle 定义一个(圆形)边框并更改边框颜色,例如如果选择了 ListView 或 Button。

谢谢!

【问题讨论】:

    标签: wpf panel styles border


    【解决方案1】:

    恐怕您的第一个问题的答案是否定的!您不能模板化面板控件,它们是无形的。你可以在这做什么。有几个选项,例如创建一个包含 StackPanel 的自定义控件。这个问题的答案包括很多好主意:

    Changing WPF StackPanel template

    对于您的第二个问题,同样不,您不能仅通过样式来根据孩子的样式更改来设置祖先的样式。

    您可以使用 ElementName 绑定将元素的某些属性连接在一起:

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

    在上面,边框背景绑定到按钮“MyButton”的 Tag 属性,然后您可以将样式应用于设置 Tag 属性的按钮,从而更改边框背景。

    【讨论】:

    • 谢谢科林! >>对于您的第二个问题,再次不,您不能仅通过样式来根据孩子的样式更改来设置祖先的样式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多