【发布时间】:2018-11-25 08:19:16
【问题描述】:
我正在使用 Galasoft MVVM Light Framework。
我的所有视图模型都静态声明为 MainViewModel.cs 中的实例字段,因此它们在窗口之间切换时保持状态:
#region Viewmodels init.
readonly static InputViewModel _inputViewModel = new InputViewModel();
[...]
readonly static LicensesViewModel _licensesViewModel = new LicensesViewModel();
readonly static PricesViewModel _pricesViewModel = new PricesViewModel();
#endregion
在我的输入用户控件中,我正在显示一个选项卡控件。 在每个 tabitem 中,我将一个新的用户控件绑定为视图
<UserControl>
<DockPanel>
<TabControl>
<TabItem Header="Prices">
<local:PricesControl DataContext="{x:Type viewModels:PricesViewModel}" />
</TabItem>
<TabItem Header="Licenses">
<local:LicenseControl DataContext="{x:Type viewModels:LicensesViewModel}" />
</TabItem>
</TabControl>
</DockPanel>
</UserControl>
但是,我无法将视图模型绑定到视图。 tabcontrol 总是在 inputviewmodel 的数据上下文中。
非常感谢任何建议!
【问题讨论】:
-
将 TabControl 绑定到包含视图模型的集合并使用数据模板来显示控件。如果您需要任何进一步的帮助,您需要提供类的定义。例如,您为什么要在 MainViewModel 中而不是在 InputViewModel 中实例化 LicenceViewModel?
标签: c# wpf mvvm mvvm-light