2013-04-22 42 views
0

我正在设计CellValuePresenter(来自Infragistics)以给予Gid Lines不同的外观并定义了样式(gridLineStyle)并应用于网格的CellValuePresenterStyle属性。如何在不使用BasedOn属性的情况下基于另一种样式的顶部应用WPF样式

我发现有自定义模板通过模板CellValuePrenter定义的列,并且网格线不可见(如预期的那样)。我可以把它应用支持算法FMP财产在

<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}" 
      ... 

工作,但也有很多款式定制模板,只是想知道我是否能定义一个样式,而无需使用支持算法FMP财产,但继承默认样式

+1

很可能您不能重新创建整个样式定义而忽略BasedOn,并且可能需要执行大量工作。 你可以做的是你可以跳过x:Key属性,这个样式将成为其默认范围 – 2013-04-22 19:47:10

+0

@StenPetrov中的所有'ig:CellValuePresenter'如果我从gridLinesStyles中删除x:key,它将成为所有默认值CellValuePresenters除了那些模板化(如anotherColumnStyle),不会有默认样式继承的不是它。这正是我想要解决的问题。 – skjagini 2013-04-22 19:56:04

+0

正确。如果您在某处使用了Style属性,那么默认样式不会是这个样式。 – 2013-04-22 19:58:00

回答

2

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

+0

当你将它重新设置为另一个ColumnStyle时,它不再尊重原始风格,不是吗? – skjagini 2013-04-22 20:12:38

+0

如果将样式定义放入Application.Resources中,该样式将成为新的“原始样式”。这不是Infragistics提供DefaultStyles文件夹的原因。所以你可以根据你的需要重新设计一切。如果您不需要在全局应用程序级别更改样式,则可以放入UserControl的资源,甚至放入XamDataGrid的内部资源。 – jure 2013-04-22 20:58:26

相关问题