gpt4 book ai didi

wpf - WPF中如何实现标签页控件的懒绑定(bind)?

转载 作者:行者123 更新时间:2023-12-03 10:12:32 24 4
gpt4 key购买 nike

我有一个实体类。这个实体有很多属性,实体的数据在几个TabItems中显示给用户。的 TabControl .我还实现了 MVVM 方法。

当屏幕首先显示给用户时,我只想绑定(bind)事件的标签页控件,并且当用户在标签页中导航时,将根据需要进行额外的单独绑定(bind)。我怎样才能做到这一点?

最佳答案

你没有任何事可做,这是默认行为。 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>

在上面的代码中, 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>

关于wpf - WPF中如何实现标签页控件的懒绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3494255/

24 4 0