【发布时间】:2011-04-13 14:50:00
【问题描述】:
我有一个带有选项卡式 UI 的 MainView。
如何向 TabControl 添加新的 TabItem(= View)? 基本上我看到了两种方式:
1.)
* 从 MainView 中的代码我可以添加一个新选项卡。
* 新选项卡包含一个带有对其视图模型的引用的视图。
2.)
* 从 MainViewModel 中的代码,我可以将新视图模型添加到子视图模型列表
* mainView的tabcontrol绑定到那个列表
我更喜欢案例 #1,因为我认为视图应该知道并实例化它的 VM(可能通过使用 MVVM 灯 ViewModelLocator),而不是相反。
但是我怎样才能从新创建的 VM 引用到 MainVM?例如:MainVM 有一个属性“IsAdmin”;如何从 SubViewModel 访问(绑定)该属性?
备选方案#2:TabControl 如何知道应该为不同的 ViewModel“渲染”哪个视图?如何从 SubViewModels“映射”到相应的“SubViews”?
感谢您分享您的想法!
【问题讨论】:
-
视图的性质是什么? (它们是否相同),它们是如何添加的?
-
观点可能大不相同。像实体(产品、客户)的可视化以及文档的预览等。目前,我从周围 MainView 的代码隐藏方法中添加它们,并让 TabControl 本身处理关闭和删除选项卡,效果很好。但我确实相信,这不是最好的方法,“标签控制”应该去别的地方......
标签: silverlight architecture mvvm mvvm-light