動的データ バインディングがたくさんあるDataGridので、常にAutoGenerateColumns=True. bool列の場合は が生成されますがDataGridCheckBoxColumn、null 許容の bool ( bool?C# の場合) はデフォルトの が生成されますDataGridTextColumn。nullable boolDataGridの自動生成を強制する方法はありますか? DataGridCheckBoxColumn実装に依存しないハックを好まない。また、イベントなどでいくつかのコード ビハインドが受け入れられAutoGeneratingColumnます。
2655 次
2 に答える
0
試してみる必要があります-私はVSの近くにいません-しかし、これを使用して簡単に解決できるはずです...
私の他の投稿を見てください...
AutoGenerateColumnsがTrueに設定されているときに特定の列がDataGridで生成されるのを止める方法は?
その「メソッド」をbindコマンドに使用します(すべてMVVMストレートです-添付プロパティ
が必要です。AutoGenerateColumnEvent
次に、コマンド処理で、私が行ったように-列を置き換えます-すでに提案したように。
1)Attach提供されたクラスを使用し、名前空間などを追加します。
2)そしてあなたのXAMLで...
<DataGrid
local:Attach.AutoGenerateColumnEvent="{Binding AutoGeneratingColumnCommand}" AutoGenerateColumns="True" />
3)そしてあなたのビューモデルで...
RelayCommand _autoGeneratingColumnCommand;
public RelayCommand AutoGeneratingColumnCommand
{
get
{
return _autoGeneratingColumnCommand ?? (_autoGeneratingColumnCommand = new RelayCommand(param =>
{
var e = param as DataGridAutoGeneratingColumnEventArgs;
var type = ((PropertyDescriptor)e.PropertyDescriptor).PropertyType;
if (type == typeof(bool?))
e.Column = new DataGridCheckBoxColumn();
},
param => true));
}
}
注:より一般的な解決策については...
を使用し
PropertyDescriptorてプロパティ タイプを取得し、それに基づいて一般的な決定を下すことができます。だからあなたはそれを試してみる必要があります.
于 2013-04-09T16:40:14.720 に答える