wpf - 在 ViewModel 之间共享状态

标签 wpf silverlight xaml mvvm

我有两个 ViewModel 将相同的模型呈现给不同的 View 。一个人将模型显示为 ListBox 中的一个项目。 ,另一个将其显示为 TabControl 中的选项卡. TabControl是显示在 ListBox 中选择的项目的选项卡。 ,以便选项卡随着选择的变化来来去去。

我可以通过添加 IsSelected 轻松同步这两个控件属性到模型并将 ViewModels 绑定(bind)到它(有点像 this ),但这会使模型困惑,其中包含不真正属于那里的演示细节。

似乎我需要模型和 View 模型之间的一些东西来保持这个额外的状态。是否有任何模式或示例说明这样做的好方法?

最佳答案

使用 View 模型。

您有一个包含两个控件的 View 。有一个 View 模型,其中包含要绑定(bind)到的 ListBox 控件的 ViewModel 列表。同样在此 View 模型中,将列表框选择绑定(bind)到 TabControl 然后也绑定(bind)到的第二个 View 模型列表。

这样,您的列表框将驱动选项卡控件显示的内容,而无需将此信息输入模型,而模型应该忽略 View 的存在。

关于wpf - 在 ViewModel 之间共享状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1159035/

相关文章:

.net - 使用 MEF 动态加载 XAP 文件时出现问题。 IE 正在崩溃

c# - 单击 Silverlight 时更改 ToggleButton 图像

c# - MediaPlayerElement 循环播放视频 UWP 的问题

c# - 如何查看 silverlight 项目中部分类的其余部分?

c# - 为什么 textedit 验证处理程序被调用两次?

wpf - 将 double 绑定(bind)到文本框

c# - 在运行时使用自动生成的列更改 WPF 数据网格中列标题的颜色

WPF,在 TreeView 中显示属性值而不是节点名称

silverlight - 在 Silverlight 和 MVVM 中动态添加 View

c# - 是否可以继承 XAML?