使用MVVM-Light将用户控件加载到窗口中的最佳做法是什么? 在哪里创建User Control实例,在Window中的ViewModel中或直接在窗口中?
答案 0 :(得分:3)
如果您担心最佳做法,您的VM不应包含任何特定于UI的代码,例如控件。例如,如果VM中有一个属性来控制视图中控件的可见性,则该属性应为bool类型而不是Visibility。视图将使用bool属性隐藏或显示控件。
所以你有一个视图(就像一个窗口),它与VM进行数据绑定。 VM中的某些属性更改将导致窗口中的某些代码创建并显示用户控件。
答案 1 :(得分:2)
我刚刚阅读this excellent post关于使用MVVM(Light)创建选项卡式界面。它没有讨论用户控件,但目标非常接近。修改它以支持用户控件很容易。
方法是将选项卡控件绑定到可观察的工作空间集合(ViewModels)。添加新选项卡(或工作区)时,它将在ViewModel中实例化,添加到集合中,数据绑定到View,并在DataTemplates的帮助下呈现为新选项卡。
答案 2 :(得分:0)
如果你能展示一个使用mvvm灯的例子,我将很高兴。 我也有问题想要主窗口与“子窗口”(用户控件)显示/隐藏按钮点击主窗口.. 所以我应该在同一个地方创建它们让我们说网格列然后男性它们通过属性绑定显示/隐藏?