MVVMパターンに従って実行時にSilverlightDataGridコントロールでDataGrid列を動的に指定する最良の方法は何ですか?
私がやりたいのは、「DataGrid.Columns」プロパティをViewModelのプロパティにバインドして、ユーザーが列を追加/削除した場合に、ViewModelプロパティを更新するだけで、DataGridが変更されるようにすることです。問題は、「DataGrid.Columns」プロパティをバインドできないことです(私は思いません)。
このプロパティは使用できず、DataGridコントロール自体もViewModelレベルで使用できないため、現在のアプローチは、この特定の実装のMVVMパターンの外に出て、ViewのコードビハインドでMVVMLightのMessengerクラスを使用して特定のイベントをキャプチャすることです。この機能を実現するには、DataGridコントロールと直接通信してください。これは詳細のないこのアプローチの一般的なステートメントですが、もっと簡単な方法はありますか...またはそれほど簡単ではないかもしれませんが、MVVMパターンに少しよく準拠するより良い方法はありますか?
DataGridコントロールのColumnsプロパティをバインドできないことに夢中になっています...とても単純なことのようです。
参考までに-AutoGenerateColumns=Trueを使用することが提案される前は、DataGrid.ItemsSourceにバインドされているコレクション内の各アイテムにバインドされているクラスには、列にバインドされているものを識別するための個別のプロパティがありません...これは、特定のパスが外れるように列を完全に動的に保つための列。また、AutoGeneratingColumnsを処理し、e.Cancelを使用して列を表示/非表示にすることも、これと同じ理由で問題があります(私は思います)。