2010-11-25 57 views
2

在Prism V4/MEF/MVVM應用程序中,我得到了一個包含TabControl的View。在MVVM中選擇(之前)時加載TabItem內容

在顯示項目列表的第一個TabItem中,第二個TabItem被禁用,除非選擇了有效的項目。現在當用戶點擊第二個TabItem時,我想加載並準備一些額外的數據到第二個TabItem中。

如何獲得MVVM中TabItem更改的通知?

回答

6

我想你的意思是延遲加載。啓動此示例並將調試斷點放入ContentViewModel構造函數中。

public MainWindow() 
    { 
     InitializeComponent(); 
     var items = new List<TabItemViewModel> 
     { new TabItemViewModel{Title="Tab 1", Content = new Lazy<ContentViewModel>(() => new ContentViewModel(1))}, 
      new TabItemViewModel{Title="Tab 2", Content = new Lazy<ContentViewModel>(() => new ContentViewModel(2))} 
     }; 
     tab.ItemsSource = items; 
    } 

    public class TabItemViewModel 
    { 
     public string Title { get; set; } 
     public Lazy<ContentViewModel> Content { get; set; } 
    } 

    public class ContentViewModel 
    { 
     public ContentViewModel(int i) 
     { 
      this.SomeText = "Loaded tab "+i; 
     } 
     public string SomeText { get; set; } 
    } 

的XAML模板:

+0

酷,幾乎是我想要的。剩下的唯一問題是:我如何每次更新標籤內容*用戶切換到它(或者在可見時更新它)? – Sam 2010-11-26 10:05:42

相關問題