0

私のアプリケーションには、左側に Outlook スタイルのメニューがあり、右側にコンテンツが表示されています。Prism のナビゲーション API を使用しています。ユーザーがメニュー項目間を移動すると、特定のメニュー項目で最後に表示されたコンテンツが表示されるため、ユーザーは 2 つの領域を行き来して情報を比較できます。これには、「ページ」ごとに個別の領域を持つメイン表示領域 (つまり、メニュー選択のコンテンツを表示するための UserControl) がネストされている必要があります。

各ページには特定のコントロールのインスタンスが少なくとも 1 つ含まれており、そのコントロールにはハンドラーDependencyPropertyを持つがあります。PropertyChangedCallback私が気づいたのは、ページがナビゲートされると、コレクションがバインドされているページ上のすべてのコントロールがコントロールのPropertyChangedCallbackハンドラーをトリガーすることです (これは私が望むものです) が、コレクション以外のバインディングは実行しません。

ページに移動するとNavigatedTo、メイン (外側) 領域でイベントがトリガーされることがわかります。ページ固有の (内側の) 領域で NavigatedTo イベントをトリガーしたくないので、それで問題ありません。しかし、私が得られないのは、イベントを取得する外側の領域であるときに、内側の領域のコントロールまたはバインディングのいずれかに変更が通知される理由です。

各コレクション バインディングはListCollectionViewoverObservableCollectionであり、各コレクション アイテムは を実装しINotifyPropertyChangedます。

私の質問は次のとおりです。

  1. 依存関係プロパティの変更をトリガーする、各コレクションが処理するイベントで、コレクション以外のイベントは処理されませんか?
  2. 外側の領域に移動すると、内側の領域のコントロールに影響するのはなぜですか? 内部領域が受信する必要があるイベントは何ですか?
  3. 非コレクションバインディングを実装して同じ効果を得るにはどうすればよいですか?
4

1 に答える 1

1

サンプルがなければ、あなたの問題はバインディングやプロパティに関連していないと推測できます。

おそらくあなたの問題は、あなたの意見がどのように表明されたかです。ビューを切り替えると、コンテナー (MEF? Unity?) からビューの古いコピーが取得され、別のケースでは、新しいインスタンスが作成され、それらすべてのイベントが発生します。

于 2012-06-23T13:31:28.173 に答える