ViewModel
にバインドされたContentControl
を含むWPF(およびEntity Framework 4とMVVMパターンを使用)からExpander
があります。私が望むのは、このコンテンツコントロールをバインドすることです。LAZILY。つまり、私はをExpander
が開かれたときに「取得」したいと思っています。遅延WPFバインディング
どうすればよいですか?内部の複雑なウィンドウを作る方法ViewModels
?
ViewModel
にバインドされたContentControl
を含むWPF(およびEntity Framework 4とMVVMパターンを使用)からExpander
があります。私が望むのは、このコンテンツコントロールをバインドすることです。LAZILY。つまり、私はをExpander
が開かれたときに「取得」したいと思っています。遅延WPFバインディング
どうすればよいですか?内部の複雑なウィンドウを作る方法ViewModels
?
あなたは、あなたのViewModelにIsExpanded
プロパティを追加し、それにエキスパンダーを結合し、そしてContentControl
の内容を返すときに考慮に入れ、そのプロパティの値を取ることができる:
private bool _isExpanded;
public bool IsExpanded
{
get { return _isExpanded; }
set
{
_isExpanded = value;
OnPropertyChange("IsExpanded");
OnPropertyChange("Content");
}
}
public SomeType Content
{
get
{
if (!_isExpanded)
return null;
return LoadContent();
}
}
上記と同様の別のオプションをObservableCollectionを作成することがありますが、エクスパンダが最初に開かれたときにのみそれを設定します。
コンテンツをキャッシュします。この方法では、LoadContentメソッドを何度も呼び出している可能性があります。 –
@Erno、確かにそうすることができますが、OPが正確に何を望んでいるかによって異なります... –
リソースを取得するのが高価なので、ほとんどの場合、遅延ロードが必要なのでコメントを追加しました。それは批判の意味ではありませんでした。ちょうど追加。 –