wpf - 在WPF中,mvvm如何实现标签页控件的惰性绑定?

  显示原文与译文双语对照的内容
66 4

我有一个实体类。实体具有大量属性,在 TabControl的几个 TabItems 中将实体的数据显示给用户。我还实现了MVVM方法。

当屏幕首先显示给用户时,我想只绑定活动选项卡页控件,并且用户通过选项卡页。我怎么才能做到?

时间:原作者:0个回答

80 0

你没有任何要做的事情,这是默认行为。在选择这里 TabItem 之前,TabItem 内容的DataTemplate 将不会被实例化

编辑:下面是一个示例:

<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>

在上面的代码中,TabControl 将根据项类型选择适当的DataTemplate,并且只在选择该项时呈现它。

编辑 2: 显然你希望在几个页面上显示单个视图的数据。如果希望每个 TabItem的控件都延迟实例化,则需要使用每个 TabItemContentTemplate 属性:

<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>
原作者:
...