0

メイン ビュー モデル ( ) には、DataTemplate を使用してそのビュー (innerView) にバインドさmainViewModelれた内部ビュー モデル ( ) が含まれています。innerViewModel

私のmainView場合、ContentPresenterContent プロパティが にバインドされ、innerViewModelVisibility がIsVisibleプロパティにバインドされています。Visibility プロパティは Collapsed であり、Visible に設定されることはほとんどありません。

MymainViewModelはリスト内の ~1000 のうちの 1 つです。現在、 の各インスタンスには、ほとんど使用されないmainViewModelのインスタンスもあります。ビューが表示されるようになったときにのみ作成されるようinnerViewModelに、遅延してインスタンス化する標準的な方法はありますか? バインディングで使用されるinnerViewModelため、遅延インスタンス化の通常のアプローチは機能しません。innerViewModel

おそらく、めったに見られないコントロールを別のコントロール内に収容するためのより良いアプローチがあるでしょうか?

4

2 に答える 2

2

遅延初期化にLazyオブジェクトを使用してみてください。

于 2012-11-16T12:23:29.200 に答える
0

「ビューが表示されるようになったときにのみ作成されるように、innerViewModel を遅延してインスタンス化する標準的な方法はありますか?」

解決策は、まさにそれを行うことです。IsVisible プロパティが最初に true に設定されるまで、実際には innerViewModel のインスタンスを作成しません。これは、mainView の ContentPresenter のコンテンツがほとんどの場合 null にバインドされることを意味しますが、これは問題ではないようです。

于 2012-11-16T12:43:03.787 に答える