[英]Simple usercontrol and MVVM pattern: How to use?
请帮我
我有
public partial class OrderControl : UserControl
{
private OrderHeader orderHeader;
public Customer selectedCustomer { get; set; }
private Customer[] allCustomers;
public User selectedManager { get; set; }
private User[] allManagers;
public OrderControl()
{
InitializeComponent();
DataContext = this;
}
...
}
我需要一种绑定到源的方式:
<ComboBox Name="CustomerComboBox" SelectedItem="{Binding selectedCustomer}"/>
这是将selectedCustomer属性保留在OrderControl.xaml.cs中的最佳方法,还是我需要使用..,selectedCustomer,...属性创建一些OrderViewModel类,并在OrderControl.xaml.cs中保留OrderViewModel的实例?
谢谢
最好创建一个ViewModel类,将属性移至该类,并使其成为UserControl
的DataContext
。
此外,您的selectedCustomer
属性只是一个常规的.NET属性,它需要支持INotifyPropertyChanged接口以促进绑定和更改通知...通常是所有其他ViewModel
类都继承自其的基础ViewModel
类将实现此接口...
如果实现INotifyPropertyChanged,那将起作用。 现在,设置属性后,组合框无法获取更新。 请参阅http://msdn.microsoft.com/en-us/library/ms229614.aspx
但是,如果您希望遵循MVVM,则将需要创建一个视图模型对象。
如果要创建真实的用户控件,则不应:
DataContext = this;
这是HB的报价
这是一种不好的做法,将DataContext设置为“从外部”是不可见的,并且不切实际,因为通常需要和期望对DataContext的继承
这是类似的问答。
但是,如果您想先使用ViewModel做MVVM。
引用雷切尔的话:
记住,使用MVVM,您的ViewModels是您的应用程序。 视图只是一个漂亮的界面,允许用户与您的ViewModels进行交互。
这意味着您应该使用所需的所有属性和命令来创建适当的视图模型。 从用户控件中删除所有代码,因为它现在只是一个视图。 viewmodel首先通过数据模板连接viewmodel和视图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.