2012-05-17 53 views
0

可以說我有一個爲ItemsContainer控件設置的全局樣式,並且這種樣式在運行時很好地應用。現在我需要根據某些條件爲每行繪製行背景。爲此,我決定使用RowStyleSelector。如何在不丟失全局樣式集的情況下使用StyleSelector?

<RadTreeListView RowStyleSelector="{StaticResource ActivityRowStyleSelector}" /> 

<Style x:Key="xxxTreeListViewStyle" TargetType="telerik:TreeListViewRow"> 
    <Setter Property="Background" Value="#FFFFE1C4" /> 
</Style> 

<local:xxxRowStyleSelector x:Key="xxxRowStyleSelector" 
          FailureStyle="{StaticResource xxxTreeListViewStyle}" 
          .../> 

但這覆蓋全局的風格,我的行集,而我只想背景屬性更改爲現有的樣式。

而另一個問題是:我將如何將此更改應用於特定的單元格而不是行?

回答

0

您可以使用Style.BasedOn屬性從另一個樣式「繼承」一種樣式。使用這樣的(其中RowGlobalStyle是您先前創建的全局樣式的名稱):

<Style x:Key="xxxTreeListViewStyle" TargetType="telerik:TreeListViewRow" 
    BasedOn="{StaticResource RowGlobalStyle}"> 
    <Setter Property="Background" Value="#FFFFE1C4" /> 
</Style> 
+0

這種風格是在另一個XAML文件,這是我在應用程序的資源合併到一起。我如何使用BasedOn與另一個xaml文件中的樣式? – Goran

+0

@Goran我不確定,在一個程序中我沒有做太多的XAML文件。如果您嘗試將BasedOn與另一個文件的樣式一起使用,是否會出現編譯器錯誤? – Andy

+0

是的我找不到資源異常。我能夠解決這個問題,看起來合併時xaml文件的順序非常重要。無論如何,它仍然不起作用。現在我有完全相反的結果:現在我的自定義樣式已應用,但setter Property =「Background」不起任何作用......以前,它的背景已更改,但樣式已丟失。 – Goran

相關問題