我可以根据XAML元素的父元素将样式应用于XAML元素吗?

时间:2012-11-26 04:37:09

标签: xaml styles conditional-statements controltemplate

在父元素类型上具有条件的元素上应用样式的正确方法是什么,i。即只有他们是某些其他元素的孩子?

在我的情况下,我想要应用一些确切的按钮宽度和高度,但仅当这些按钮是stackpanel的直接子节点时。此外,第二种样式应该应用于这些按钮(字形)中的图像。

  • 如何定义仅影响堆叠面板上按钮的按钮样式,而不是直接放置在网格上的按钮?
  • 是否可以添加其他条件,例如仅使用orientation="horizontal" 的堆叠面板?
  • 我可以定义“树状况”,例如仅在[水平]堆叠面板上的按钮上设置图像吗?

由于我应用程序中90%的按钮都是堆叠面板上的按钮,到目前为止,我已将样式应用于所有按钮和图像,并在必要时覆盖它。但这不是最佳解决方案,是吗?

最好,解决方案将处理样式定义中的所有条件,因此我不必将该样式明确地分配给每个堆栈面板。

1 个答案:

答案 0 :(得分:0)

<StackPanel>
   <StackPanel.Resources>
      <Style x:Key="Rectangle1" TargetType="Rectangle">
        <Setter Property="Stroke" Value="Black" />
        <Setter Property="Fill" Value="White" />                                            
      </Style>                                      
   </StackPanel.Resources>
   <UniformGrid Columns="10">
      <UniformGrid.Resources>
         <Style TargetType="Rectangle" BasedOn="{StaticResource Rectangle1}">
            <Setter Property="Fill" Value="Red" />                                          
     </Style>                                       
      </UniformGrid.Resources>

    </UniformGrid>
</StackPanel>