2010-06-10 77 views
0

将用户控件加载到MVVM-Light的窗口中的最佳做法是什么? 哪里创建UserControl实例,在ViewModel从窗口或直接在窗口中?MVVM-Light:将用户控件加载到窗口中

+0

你能更具体一点吗? VM绝对不应该创建一个UserControl。通常,控件通过数据模板注入或直接包含在窗口XAML中。 – 2010-06-10 22:04:14

回答

3

如果您担心最佳做法,则您的虚拟机不应包含任何类似控件的UI特定代码。例如,如果在虚拟机中有一个属性控制视图中控件的可见性,那么该属性应该是bool类型而不是“可见性”。该视图将使用bool属性来隐藏或显示控件。

所以你有一个视图(像一个窗口)哪个数据绑定对虚拟机。 VM中的一些属性更改会导致窗口中的某些代码创建并显示用户控件。

0

如果您能够展示使用mvvm灯光的例子,我会很高兴。 我也有问题想要与“子窗口”(用户控件)主窗口显示/隐藏按钮点击从主窗口。 所以我应该创建它们都在同一个地方让我们说网格列,然后男性他们显示/通过属性绑定隐藏?

+0

我认为这应该被重新修改,并提出一个新的问题,但由于它是从2010年2年半后downvote将是不利的。 – dumbledad 2012-12-04 14:33:16

2

我刚刚读了this excellent post关于使用MVVM(Light)创建标签式接口。它没有谈论用户控件,但目标非常接近。很容易修改以支持用户控件。

该方法是将选项卡控件绑定到可观察的工作区集合(ViewModels)。当添加新的选项卡(或工作区)时,它将在ViewModel中实例化,添加到集合中,绑定到视图并在DataTemplates的帮助下作为新选项卡呈现。

相关问题