如何在不使用BasedOn属性的情况下基于另一种样式应用WPF样式

时间:2013-04-22 19:42:43

标签: wpf

我正在设置CellValuePresenter(来自Infragistics),为Gid Lines提供不同的外观,并定义了一个样式(gridLineStyle)并应用于Grid的CellValuePresenterStyle属性。

我发现有些列可以通过模板化CellValuePrenter来定义自定义模板,并且网格线不可见(如预期的那样)。我可以通过在

中应用BasedOn属性来使其工作
 <Style x:Key="gridLineStyle" TargetType="ig:CellValuePresenter">
      <Setter Property="BorderThickness" Value="0,0,1,1"/>
      <Setter Property="BorderBrush" Value="{Binding Path=BorderBrushForAllCells,RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type pwc:CarbonBlotter}}}"/> 
    </Style>

 <Style x:Key="anotherColumnStyle" TargetType="{x:Type ig:CellValuePresenter}"   BasedOn="{StaticResource gridLineStyle}">
      <Setter Property="Template">
      ....

<pwc:BaseXamDataGrid>
    <pwc:BaseXamDataGrid.FieldSettings>
            <ig:FieldSettings CellValuePresenterStyle="{StaticResource gridLineStyle}"
             ...

但是自定义模板有很多样式,只是想知道我是否可以在不使用BasedOn属性的情况下定义样式并继承默认样式

1 个答案:

答案 0 :(得分:2)

您可以在DefaultStyles \ DataPresenter \ DataPresenterGeneric_Express.xaml下的infragistics安装文件夹中找到完整的CellValuePresenter样式定义 您可以将该样式复制到Application.Resources下的App.xaml中,根据需要进行修改,这应该成为CellValuePresenter的新默认样式。