2009-07-24 92 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