[英]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.