如何在WPF的用户控件中构建可重用的用户控件?

时间:2012-03-23 21:12:38

标签: wpf mvvm

我正在使用带有WAF框架的WPF。

我有一个UI(假设它收集用户凭据)在多个视图上呈现(见图)。

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

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

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

enter image description here

1 个答案:

答案 0 :(得分:2)

  

此“凭据”用户控件是否应具有自己的专用视图模型?它应该通过依赖属性公开其数据吗?什么是最好的方法?

UserControl有两个目的 -

如果你想将它用作“控制” - 在这种情况下通常就是这种情况,我会将其视为100%视图。因此,我不会让UserControl完全拥有ViewModel(至少不是公开的),并通过Dependency Properties公开它的属性。这在重用方面提供了最大的灵活性,因为UserControl的行为与任何其他FrameworkElement一样,并且可以像其他任何控件一样放入并绑定到您自己的其他位置的属性。

但是,当UserControl充当ViewModel的View时,情况会有所不同。在这里,目标不是重用,而是在View和VM之间分离关注点。

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