2013-04-22 81 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

相關問題