在DataGrid中,我想根据ViewModel上的特定条件更改行的颜色。
虽然这在WPF中似乎是一项简单的任务,但在silverlight中,你不能绑定到样式定义中的属性,你也不能利用数据网格的RowBackground。
相反,我必须将每个列标题从DataGridTextColumn更改为DataGridTemplateColumn,并在其中创建我自己的由网格包装的文本框。在那里,我将把网格的背景绑定到我的ViewModel中的条件颜色选择。
这一切都运行得很好。但是,当我尝试将DataGridCheckboxColumn复制到DataGridTemplateColumn中时,我遇到了一个问题。另外,我在网格中创建了一个复选框,并可以相应地设置颜色,即使数据网格被设置为只读,复选框也可以被勾选。里面的复选框似乎并不关心数据网格的只读状态。
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<CheckBox HorizontalAlignment="Center" VerticalAlignment="Center">
<CheckBox.IsChecked>
<Binding Path=Sales Mode="TwoWays"/>
<CheckBox.IsChecked>
</CheckBox>
</Grid>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>有没有人知道为什么,有没有更有效的方法来实现我想要在Silverlight中实现的目标?
非常感谢,
发布于 2011-06-23 09:56:01
您需要为DataGridTemplateColumn指定CellTemplate和CellEditingTemplate。下面这样的代码应该是有效的:
<sdk:DataGridTemplateColumn IsReadOnly="True">
<sdk:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<CheckBox HorizontalAlignment="Center"
VerticalAlignment="Center"
IsChecked="{Binding SomeProperty}">
</CheckBox>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellEditingTemplate>
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox HorizontalAlignment="Center"
VerticalAlignment="Center"
IsChecked="{Binding SomeProperty}"
IsEnabled="False">
</CheckBox>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>样式中绑定的This解决方案可能也很有用。
https://stackoverflow.com/questions/6446951
复制相似问题