我已经构建了一个WPF UserControl View / ViewModel对:视图XAML处理布局和绑定,ViewModel处理逻辑,与推荐的MVVM模式一致。
我希望能够将其重新用作控件。
如何隐藏/封装与视图关联的ViewModel,以便我可以像使用标准控件[如按钮]一样使用控件?
即。如何隐藏控件的viewmodel?
答案 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; }
}