CheckBox
在过去的一个小时里,我一直在寻找应该是一个简单问题的解决方案:如何在 Xceed 的社区中创建单击可编辑的绑定DataGridControl
。
需要明确的是:我想要一个CheckBox
用户可以单击 any 的列CheckBox
,而不管选择了哪一行,并相应地IsSelected
更改视图模型的属性。
以下是我尝试过的最新排列。此代码从模型中读取值,但由于某种原因单击CheckBox
不会调用IsSelected
设置器。
<xcdg:DataGridControl x:Name="DictionariesDataGridControl" ItemsSource="{Binding Mode=OneWay, Source={StaticResource DictionariesViewSource}}" AutoCreateColumns="False" AutoRemoveColumnsAndDetailConfigurations="False" SelectionMode="Extended" NavigationBehavior="RowOnly">
<xcdg:DataGridControl.View>
<xcdg:TableView UseDefaultHeadersFooters="False" ShowRowSelectorPane="False" VerticalGridLineThickness="0">
<xcdg:TableView.FixedHeaders>
<DataTemplate>
<xcdg:ColumnManagerRow BorderThickness="0"/>
</DataTemplate>
</xcdg:TableView.FixedHeaders>
</xcdg:TableView>
</xcdg:DataGridControl.View>
<xcdg:DataGridControl.Columns>
<xcdg:Column FieldName="IsSelected" MinWidth="20" MaxWidth="20" CellEditorDisplayConditions="RowIsCurrent">
<xcdg:Column.CellContentTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding ., Mode=OneWay}" IsHitTestVisible="False"/>
</DataTemplate>
</xcdg:Column.CellContentTemplate>
<xcdg:Column.CellEditor>
<xcdg:CellEditor>
<xcdg:CellEditor.EditTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding ., Mode=TwoWay}"/>
</DataTemplate>
</xcdg:CellEditor.EditTemplate>
</xcdg:CellEditor>
</xcdg:Column.CellEditor>
</xcdg:Column>
</xcdg:DataGridControl.Columns>
编辑 1
我正在尝试这个,这正是我需要的:
<xcdg:Column FieldName="IsSelected" MinWidth="20" MaxWidth="20" CellEditorDisplayConditions="Always"/>
除了,由于某种原因,它CheckBox
的样式是蓝色的!
我在可视化树中选择了具有定义为颜色的属性Background
的元素:SolidColorBrush
#FF0000FF
编辑 2
我反编译了DataGridCheckBox
Xceed 用来渲染的类,CheckBox
发现了这个覆盖:
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
this.ChildCheckBox.Background = (Brush) new SolidColorBrush(Colors.Blue);
}
Xceed 任意将背景颜色设置为蓝色,这是多么奇怪的决定。
编辑 3
使用@JBrooks 的回答,我尝试了以下方法:
<xcdg:Column FieldName="IsSelected" MinWidth="20" MaxWidth="20" CellEditorDisplayConditions="Always">
<xcdg:Column.CellEditor>
<xcdg:CellEditor>
<xcdg:CellEditor.EditTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding ., Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</xcdg:CellEditor.EditTemplate>
</xcdg:CellEditor>
</xcdg:Column.CellEditor>
</xcdg:Column>
不幸的是,由于某种原因,IsSelected
当我选中该框时,从未调用该属性的设置器。不过,getter 被多次调用,并且CheckBox
es 在初始绑定时正确显示。