2009-07-24 89 views
8

我有一個silverlight(v2)datagrid,其中一些項目是節標題,因此必須以不同的背景顏色顯示。silverlight datagrid - 綁定每一行的樣式

我試圖用下面的XAML做到這一點:

 <dg:DataGrid.RowStyle> 
      <Style TargetType="dg:DataGridRow"> 
       <Setter Property="Background" Value="{Binding Path=Background, Mode=OneTime}" /> 
      </Style> 
     </dg:DataGrid.RowStyle> 

我希望它的DataGrid行視圖模型,以每個行的背景屬性背景屬性綁定,而是我得到一個可愛的未知的XAML解析錯誤:

{System.Windows.Markup.XamlParseException: AG_E_RUNTIME_MANAGED_UNKNOWN_ERROR [Line: 16 Position: 57] 
    at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator) 
    at Etana.Survey.Silverlight.UserInterface.Views.MaximumProbableLossPage.InitializeComponent() 
    at Etana.Survey.Silverlight.UserInterface.Views.MaximumProbableLossPage..ctor()} 

,如果我嘗試顯式指定「紅色」和不嘗試和綁定的風格,那麼它的作品,所以我不知道的Silverlight可以讓我一個風格結合一樣,或者有一些其他技巧到它。

(XAML中是基於WPF實現這其中工作正常)

任何輸入將不勝感激

+0

,可能是值得一提的另一件事是,ViewModel.Background屬性是一個字符串。 PS:我目前正在通過處理LoadingRow事件來設置每一行的背景,但我覺得這樣做很髒:P – 2009-07-24 09:07:39

回答

4

更改綁定TemplateBinding。例如

<dg:DataGrid.RowStyle> 
      <Style TargetType="dg:DataGridRow"> 
       <Setter Property="Background" Value="{TemplateBinding Background, Mode=OneTime}" /> 
      </Style> 
</dg:DataGrid.RowStyle> 
+0

它給了我以下錯誤: 錯誤屬性'背景'在'DataGridRow'類型中找不到' – 2013-11-04 11:10:19

3

從版本號4開始的Silverlight不支持Setter Value中的綁定。有作爲附加屬性實現的一種變通方法:

SetterValueBindingHelper

+0

謝謝你,肯定它會對於在第4版中尋找解決方案的人來說,這個問題很明顯,但問題是明確要求v2 :) – 2010-08-24 13:44:27

+0

準確地說,我的意思是......我在尋找解決方案時遇到了這個問題,但這個答案並沒有幫助。將編輯帖子。 – 2010-08-25 20:07:13