私はWPFアプリケーションでM-V-VMパターンを使用しています。 ViewModelをContentControlにバインドし、そのViewModelのビュー(UserControl)をレンダリングするためにウィンドウリソースで定義されたデータテンプレートを使用しています。データグリッドのコマンドへのバインド
ViewModelでは、私はアイテムのコレクションを持っています。私はそのコレクションをWPFツールキットに用意されているデータグリッドにバインドしています。また、ビューモデルでは、削除するアイテムIDの引数を取るRemoveItemコマンドが定義されています。
データグリッドでそのコマンドにどのようにバインドしますか?グリッドのデータコンテキストはそのようなものなので、
は機能しません - コマンドを見つけることができません。私はRelativeSourceバインディングを行う必要があると思うが、どのように見えるだろうか? Ancestor型はUserControlですか、ContentControlですか?私のViewModelはどこにDataContextとして存在しますか?
ここにいるのですか?
驚くばかりです。ありがとう、ケント! –
ようこそ。これを行うもう1つの方法は、データアイテムのコレクションではなく、子ビューモデルのコレクションを公開することです。これらの子ビューモデルは、コマンドを公開するプロパティを持つことができ、これらのような脆弱なバインディングを導入することを防ぎます。 –
ありがとう、それは私の問題を解決しました。 –