在Prism V4/MEF/MVVM应用程序中,我得到了一个包含TabControl的View.
在第一个TabItem中,我显示了一个项目列表,除非选择了有效项目,否则将禁用第二个TabItem.现在当用户点击第二个TabItem时,我想加载并准备一些额外的数据到第二个TabItem.
如何了解MVVM中的TabItem更改?
我认为你的意思是延迟加载.启动此示例并将调试断点放入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; }
}
Run Code Online (Sandbox Code Playgroud)
Xaml模板:
<TabControl x:Name="tab">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Title}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<TextBlock Text="{Binding Content.Value.SomeText}"/>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4499 次 |
| 最近记录: |