簡體   English   中英

簡單的用戶控制和MVVM模式:如何使用?

[英]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類,將屬性移至該類,並使其成為UserControlDataContext

此外,您的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM