silverlight datagrid - 绑定每一行的样式

时间:2009-07-24 08:22:51

标签: c# silverlight xaml

我有一个silverlight(v2)数据网格,其中一些项目是节标题,因此必须以不同的背景颜色显示。

我正在尝试使用以下xaml执行此操作:

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

我希望它将datagrid行viewmodel的Background属性绑定到每一行的Background属性,而不是我得到一个可爱的未知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()}

如果我尝试明确指定“Red”并且不尝试绑定样式,那么它可以工作,所以我想知道silverlight是否允许我绑定这样的样式或者是否有其他技巧。

(xaml基于这个的wpf实现工作正常)

任何输入都会非常感激

2 个答案:

答案 0 :(得分:4)

将绑定更改为TemplateBinding。例如

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

答案 1 :(得分:3)

版本号为4的Silverlight不支持Setter Value中的绑定。有一个解决方法作为附加属性实现:

SetterValueBindingHelper