2011-06-27 31 views
0

在我的应用程序中,我有几个菜单具有相同的背景颜色,圆角半径,边框颜色和边框粗细。我将这些属性保存为我的应用程序资源中的资源,这样如果我更改背景色,例如它将更改我所有菜单的颜色。我想知道是否可以创建一个样式,以便我可以将该样式绑定到菜单而不是绑定如此多的属性。此外,我只是想将该样式应用于某些边界,因为我的应用程序中的所有边框都不是菜单。我怎么能这样做?将相同样式应用于符合特定条件的多个对象wpf

比如我希望做一些事情,如:

这里是我的风格,我的应用程序资源:

 <Style x:Key="someStyle"> 
     <Style.Resources> 
      <Color x:Key="MenuBackground2">#BB252525</Color> 
      <CornerRadius x:Key="CornerRadiusMenu2">7</CornerRadius> 
      <Border x:Key="MainBorder2" > 
       <Border.Background> 
        <SolidColorBrush Color="{DynamicResource MenuBackground}"/> 
       </Border.Background> 
      </Border> 
     </Style.Resources>      
    </Style> 

,然后MainWindow.xaml地方:

<Border Margin="498,90,25,0" Name="brdMain" Style="{DynamicResource someStyle}"></Border> 

但当我这样做的时候,brdMain似乎并不符合那种风格......

回答

2

您的​​未正确定义。它应该是Setters的集合。例如,您定样式应该是:

<Style x:Key="someStyle"> 
    <Setter Property="Background" Value="#BB252525"/> 
    <Setter Property="CornerRadius" Value="7"/> 
    etc ...      
</Style> 

一个Style比一堆属性setter的多一点。您只能设置已应用Style的对象的属性。

+0

CornerRadius不起作用。我也需要指定边框厚度。非常感谢。 –

0
<Style x:Key="someStyle" TargetType="{x:Type Border}"> 
     <Setter Property="Control.Background" Value="#BB252525"/> 
     <Setter Property="Control.BorderThickness" Value=".5"/> 
     <Setter Property="Control.BorderBrush" Value="White"/> 
     <Setter Property="CornerRadius" Value="7"/>          
    </Style> 
相关问题