2011-06-25 68 views
4

我有Expander從WPF(並使用實體框架4和MVVM模式)其中包含ContentControl綁定到一些內部ViewModel。我只想要綁定這個內容控件LAZILY。那是我想要我的ViewModel當打開Expander時「得到」。懶惰的WPF綁定

如何做到這一點?如何使內部ViewModels的複雜窗口更快?

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(); 
    } 
} 

回答

4

你可以返回ContentControl的內容時IsExpanded屬性添加到您的視圖模型,擴展綁定到它,並採取財產的價值考慮在內可能會創建一個ObservableCollection,但只能在第一次打開擴展器時填充它。

+0

我會緩存內容!這種方式可能會多次調用LoadContent方法。 –

+0

@Erno,當然,你可以做到這一點,但這取決於OP想要的是什麼... –

+0

我添加了評論,因爲大部分時間你都需要延遲加載,因爲獲取資源非常昂貴。這並不意味着批評。只是一個補充。 –