【发布时间】:2015-04-07 15:06:25
【问题描述】:
我有以下 XAML 位:
Window.DataContext>
<viewModel:ProductBuilderVm/>
</Window.DataContext>
<UNNECESSARY DETAILS SNIP>
<TabControl ItemsSource="{Binding TabViewModels}" SelectedItem="{Binding SelectedTabVm}">
<TabControl.Resources>
<DataTemplate DataType="{x:Type viewModel:ProductDefinitionVm}">
<view:ProductDefinition></view:ProductDefinition>
</DataTemplate>
<DataTemplate DataType="{x:Type viewModel:CouplingsViewVm}">
<view:CouplingsView></view:CouplingsView>
</DataTemplate>
<DataTemplate DataType="{x:Type viewModel:RulesVm}">
<view:RulesView></view:RulesView>
</DataTemplate>
</TabControl.Resources>
</TabControl>
我的想法是创建 1 个主 ViewModel (ProductBuilderVm) 作为 TabControl 中三个 ViewModel 的“父级”。我以为我有这个工作,但现在我试图在这些子虚拟机之间进行交流,我意识到它们都是一个独立的实例,彼此没有关系。
如何重构此窗口以拥有 1 个 ProductBuilderVm,其下方有 3 个子 Vm?目标是从第一个孩子那里提取数据以供第二个孩子使用。
谢谢!
【问题讨论】:
-
你也可以让 parentVm 存储对 3 个子 vm 的引用
标签: c# wpf datatemplate datacontext