2012-03-23 96 views
3

我正在使用WPF与WAF框架。如何在WPF的用户控件中构建可重用的用户控件?

我有一块UI(让我们说它收集用户凭据),获取呈现在多个视图(见图)。

我想,嘿,这是可重复使用的,让我们把它放在自己的用户控件中。

如果我忽略了内部用户控件,并且只是“扁平化”它,但是试图封装它,却让我想知道最好的方法是什么,我可以使一切正常工作。这个“凭据”用户控件应该有自己的专用视图模型吗?它应该通过依赖属性暴露它的数据吗?什么是最好的方法?

我需要将从凭证控件收集的数据公开到外部用户控件的视图模型。

enter image description here

回答

2

如果这种 “资格证书” 的用户控制有其自己的专用视图模型?它应该通过依赖属性暴露它的数据吗?什么是最好的方法?

一个用户控件可以一举两得 -

如果你想使用它作为一个“控制” - 这往往是在这样的情况的话,我只会把它作为100%视野。因此,我不会让UserControl有一个ViewModel(至少不是公开的),并通过依赖属性公开它的属性。这在重用方面提供了最大的灵活性,因为UserControl的行为与其他任何FrameworkElement相似,并且可以像其他任何控件一样放入并绑定到您自己的其他位置中的属性。

但是,当UserControl充当ViewModel的视图时,情况就不同了。在这里,目标不是重用,而是视图和虚拟机之间的关注点分离。

这种情况听起来更像第一个 - 你想拥有一个可以在多个位置重用的控件。在这种情况下,这基本上成为一个视图元素。

+0

非常感谢你 – jglouie 2012-03-23 21:32:34