2012-11-26 43 views
0

在父元素的类型i上使用条件对元素应用样式的正确方法是什么?即只有当他们是某些其他元素的子女时可以基于它具有的父元素将样式应用于XAML元素吗?

在我的情况下,我想应用一些确切的按钮宽度和高度,但只有当这些按钮是一个堆叠面板的直接孩子。此外,第二种风格应该应用于这些按钮(字形)内的图像。

  • 如何定义只影响堆叠面板上按钮的按钮样式,但不是直接放置在网格上的按钮样式?
  • 是否可以添加附加条件,如只有与orientation="horizontal"堆栈面板?
  • 我可以在[水平]堆叠面板上的按钮上定义“树状况”,如只有图像

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

最好,解决方案将处理样式定义中的所有条件,所以我不必将该样式显式分配给每个我的堆叠面板。

回答

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> 
+0

如果您可以编辑您的帖子以包含一些简要说明,将会有所帮助。 –

+0

我很抱歉,但我不明白这与我的问题有何关系。我知道我可以覆盖基础样式的setter。但我的问题是询问我是否可以添加条件给我的一个且唯一的样式定义,需要某些父元素类型让整个样式完全应用,就像我在一个地方有我的样式定义一样,它是适用于某些元素的儿童,但不适用于所有其他元素的儿童。 – LWChris

相关问题