動的データ バインディングがたくさんある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 に答える