mku*_*kus 4 wpf binding tabcontrol lazy-loading mvvm
我有一个实体类.这个实体有很多属性和实体的数据显示给用户一些TabItems的TabControl.我还实现了MVVM方法.
当屏幕首先显示给用户时,我想只绑定活动标签页控件,当用户浏览标签页时,将根据需要产生额外的单独绑定.我怎样才能做到这一点?
Tho*_*que 16
你没有任何事情要做,这是默认行为.在DataTemplate一个TabItem直到这个内容将不会被实例化TabItem选择
编辑:这是一个例子:
<Window.Resources>
<DataTemplate DataType="{x:Type vm:Page1ViewModel}">
<v:Page1View />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:Page3ViewModel}">
<v:Page3View />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:Page3ViewModel}">
<v:Page3View />
</DataTemplate>
</Window.Resources>
...
<TabControl ItemsSource="{Binding Pages}"
DisplayMemberPath="Title">
</TabControl>
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,TabControl将DataTemplate根据项类型选择适当的,并仅在选择该项时呈现它.
编辑2:显然你想在几个页面上显示单个ViewModel的数据.如果你想要对每个控件TabItem进行懒惰实例化,你需要使用ContentTemplate每个的属性TabItem:
<TabControl>
<TabItem Header="Page 1">
<TabItem.ContentTemplate>
<DataTemplate>
<v:Page1View />
</DataTemplate>
</TabItem.ContentTemplate>
</TabItem>
<TabItem Header="Page 2">
<TabItem.ContentTemplate>
<DataTemplate>
<v:Page2View />
</DataTemplate>
</TabItem.ContentTemplate>
</TabItem>
<TabItem Header="Page 3">
<TabItem.ContentTemplate>
<DataTemplate>
<v:Page3View />
</DataTemplate>
</TabItem.ContentTemplate>
</TabItem>
</TabControl>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4020 次 |
| 最近记录: |