我需要一些幫助,將viewModel綁定到我創建的兩個usercontrol視圖。使用Mvvm綁定datacontext viewmodel到usercontrol視圖
已經創建了一個應包含這兩個usercontrols的預留窗口。
我得到了什麼:
- ReservationView(窗口)
- ReservationListView(用戶控件)
- ReservationDetailView(用戶控件)
ReservationView(窗口)類
public partial class ReservationView : Window
{
public ReservationView()
{
InitializeComponent();
//DataContext = null;
}
}
ReservationListView(用戶控件)類:
public partial class ReservationListView : UserControl, IViewReservationListViewModel
{
public ReservationListView(IViewReservationListViewModel viewModel)
{
InitializeComponent();
DataContext = viewModel;
}
}
的IViewReservationListViewModel僅僅是一個空的接口,這使得該用戶控件視圖和視圖模型之間的接觸。
ReservationListViewModel
public class ReservationListViewModel : INotifyPropertyChanged, IViewReservationListViewModel
{
public ReservationListViewModel()
{
}
}
當我嘗試設置本地:在裏面ReservationView的XAML 「用戶控件」,我得到以下錯誤:
The type "ReservationListView" does not include any accessible constructors.
我應該如何連接這兩個用戶控制到相應的viewModels當我使用MVVM?
要創建它,你需要一個沒有參數的公共構造函數。你必須通過綁定來賦予它視圖模型。通常,如果視圖模型擁有某個列表(例如'ReservationList'),則其視圖將創建一個控件來顯示該列表,並將子控件的屬性綁定到視圖模型的適當部分。如果視圖和控件都使用相同類型/實例的虛擬機,則可以綁定' - 將父級的datacontext綁定到該屬性。 –
'DataContext'屬性通常從父UI對象繼承,並且幾乎從不像在UserControl中那樣在代碼隱藏中設置。所以擺脫這一行,使其成爲一個無參數的構造函數,並確保您的DataContext繼承或正確設置父UI對象。 [克萊門斯的回答](http://stackoverflow.com/a/36778349/302677)是如何做到這一點的一個例子。 :) – Rachel