シドコスのコミュニティDataGridControl
でワンクリックで編集可能なバインドCheckBox
を作成する方法を簡単な問題の解決策として探しました。Xceed DataGridControlのワンクリックで編集可能なバインドされたCheckBox
明確にするために:私は、ユーザーが任意のCheckBox
をクリックして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
EDIT:何らかの理由で、CheckBox
がでスタイリングされ、除く
<xcdg:Column FieldName="IsSelected" MinWidth="20" MaxWidth="20" CellEditorDisplayConditions="Always"/>
青い背景!
EDIT 2
:私は色として#FF0000FF
とSolidColorBrush
として定義Background
性質を有するビジュアルツリー内の要素を選択した
私はDataGridCheckBox
クラスをXceedがレンダリングするために使用するクラスを逆コンパイルしました
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
this.ChildCheckBox.Background = (Brush) new SolidColorBrush(Colors.Blue);
}
エクシードによって奇妙な決定は任意に青に背景色を設定するにはどう:E CheckBox
とは、このオーバーライドを見つけました。 @JBrooks'答えを使用して
EDIT 3
、私は次のことを試してみました:
<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
は最初のバインド時に正しく表示されます。
これは明らかに 'DataGridCheckBox'の既知のバグです。コードレビューのために... http://wpftoolkit.cod eplex.com/workitem/20210 – NathanAldenSr
「これ」とは、青い背景の愚かさを意味します。 – NathanAldenSr
3つの質問:出力ウィンドウに何かがありますか? CurrentCellChangedイベントに似た何かがありますか?チェックボックスがフォーカスを失ったときにセッターが設定されますか? – JBrooks