我有两个 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/