3

ここでは、TreeViewControlサンプルプロジェクトをEntityFrameworkオブジェクトで使用できるように調整しました。それは美しく機能しますが、ParentViewModelsベースのSelectedItem変更でコレクションやプロパティを更新しようとしている他の多くの人と同様に、私も理解のギャップを埋めることができません。

私はMVVMで作業しており、コードビハインドに混乱がないことを望んでいます。初心者として、通知を実装する際のクリーンさは気に入ってPropertyChangedいますが、通知はにバインドする固有の「SelectedItem」プロパティでTreeViewはないため、通常のようにPropertyChangedイベントを発生させることはできませんListBox

私もChildViewModelにSelectedItemプロパティ(isSelected = trueのオブジェクトを実際に正常にキャプチャします)を持っています(この質問に対するHBの回答を参照してください)。また、ParentViewModelにタイプChildViewModelのSelectedItemがあり、これがビューにバインドされています(@Martin Liversageの投稿を参照してください。それらを同期させることができません。

SelectedItemChildViewModelのプロパティをParentViewModelに伝達する方法を理解するのを手伝ってください。TreeViewをにバインドしていないため、ビューコレクションにCollectionViewを取得できません。CurrentItem

私が扱っているビューモデルコレクションはクエリが非常に多いため、今のところコードは含まれていません。わかりやすくするために何が必要か教えてください。

4

1 に答える 1

6

だから、少なくともあなたはあなたの毎日のMVVM-WTFに慣れ始めています...'なぜ私はこれほど基本的なもののためにSOに投稿しなければならないのですか?' いつの日か、あなたはMVVMを気に入るはずです、私は約束します;)

SelectedItemご存知のように、TreeViewはプロパティの同期をサポートしていません。存在しますが、読み取り専用です。実行したいのは、TreeViewの動作を拡張して、選択したアイテムをそのViewModelのプロパティと同期させることです。

この問題の説明は、正しい方向を示しています:動作。ビヘイビアー(正確には、System.Windows.Interactivity.Behavior <>)を使用すると、任意のの機能を拡張できますDependencyObject。(良い紹介

動作を介してTreeViewを選択したアイテムと同期する方法は、次の場所にあります。

SOスレッド

これはすでにあなたのために行う必要があります。Steve GreatRexのコードをコピーして貼り付けるだけで、それを実行できます。アプローチについてサポートが必要な場合は、コメントしてください。楽しく学ぼう!

于 2013-03-07T08:10:37.387 に答える