如何将WPF ViewModel / View UserControl封装为控件

时间:2010-12-14 08:56:13

标签: c# wpf wpf-controls binding

我已经构建了一个WPF UserControl View / ViewModel对:视图XAML处理布局和绑定,ViewModel处理逻辑,与推荐的MVVM模式一致。

我希望能够将其重新用作控件。

如何隐藏/封装与视图关联的ViewModel,以便我可以像使用标准控件[如按钮]一样使用控件?

即。如何隐藏控件的viewmodel?

2 个答案:

答案 0 :(得分:2)

取决于如何将ViewModel类绑定到控件。 如果你喜欢这样:

 YourControl()
{
   DataContex = new ViewModel();
}

然后我没有看到任何问题。添加对您的控件的引用并使用它。

答案 1 :(得分:0)

您可以在XAML中将ViewModel创建为StaticResource。将DataContext设置为ViewModel的问题在于,您不能使用不再使用您使用控件的窗口或页面中的DataContext。

在您的XAML中声明您的ViewModel:

<myNS:MyViewModel x:Key="ViewModel />

在您的XAML中引用您的视图模型:

<TextBlock Text="{Binding Source={StaticResource ViewModel}, Path=TextToBind}" />

在您的Code Behind中,您可以快速访问和初始化,我通常会创建一个属性,以便您轻松参考我的视图模型。

 private MyViewModel viewModel
 {
    get { return this.Resources["ViewModel"] as MyViewModel; }
 }