2011-05-11 90 views
2

私はこの問題の解決策を探していましたが、まだ十分な解決策がまだ見つかりません。助けてください。基本的に、私はオブジェクトのリストにバインドされているツリービューを持っています。ユーザーがtreeviewitemをクリックすると、treeviewitemに基づいてデータグリッドのデータを読み込みます。ユーザーはグリッド内のデータを変更できます。データグリッドに変更があり、ユーザーが別のツリービューアイテムをクリックした場合、ユーザーは保存を求められます。ユーザーは、[はい]、[いいえ]、または[キャンセル]を選択できます。ユーザーがキャンセルを選択すると、データグリッドを保存するまで、アプリケーションはユーザーを現在のツリービュー項目にとどまらせる必要があります。問題は、ユーザーが別のツリービューアイテムを選択した後で、以前の選択が再び選択されるようにすることができないことです。 「SelectedItemChanging」イベントはありません。 WPFツリービューにはSelectedItemChangedイベントしかありません。私は複数の解決策を試していますが、私はいつも無限に終わります。ヒントやアドバイスを提供してください。WPF TreeViewキャンセルTreeViewItemの選択

おかげで、 ミン

+0

この種の事例では、通常、ツリービューにバインドされている(ビューモデル)オブジェクトにIsSelectedプロパティを含めます。 TreeViewItem.IsSelectedプロパティと(ビューモデル)オブジェクトプロパティの間に双方向バインディングを設定すると、ツリービューで項目をプログラマチックに選択できます。データグリッドを保持するコントロールが(ビューモデル)インスタンスにアクセスできる(またはコマンドを渡すことができる)場合、キャンセル時にプログラマチックに選択できます。 –

答えて

1

あなたは、あなたが最後に選択した項目を保存するプライベートフィールドを使用するだけでSelectedItemChangedイベントを処理し、常に必要に応じてフィールドを更新することができます。また、Dave ClemmerがバインドできるIsSelectedプロパティを持つことを提案すると、項目をプログラマチックに選択するのに役立ちます。