使用 Mvvm 时将数据上下文视图模型绑定到用户控件视图

Binding datacontext viewmodel to usercontrol view when using Mvvm

我需要一些帮助将 viewModel 绑定到我创建的两个用户控件视图。

已创建应包含这两个用户控件的预订Window。

我得到了什么:

ReservationView (Window) class

public partial class ReservationView : Window
{
    public ReservationView()
    {
        InitializeComponent();
        //DataContext = null;              
    }
}

ReservationListView(用户控件)class:

public partial class ReservationListView : UserControl, IViewReservationListViewModel
{
    public ReservationListView(IViewReservationListViewModel viewModel)
    {
        InitializeComponent();
        DataContext = viewModel;
    }
}

IViewReservationListViewModel 只是一个空接口,它在用户控件视图和 viewModel 之间建立联系。

ReservationListViewModel

public class ReservationListViewModel : INotifyPropertyChanged, IViewReservationListViewModel
{
    public ReservationListViewModel()
    {

    }
}

当我尝试在 ReservationView 内的 xaml 中设置 local:"usercontrol" 时,出现以下错误:

The type "ReservationListView" does not include any accessible constructors.

当我使用 MVVM 时,我应该如何 link 这两个 usercontrol 到各自的 viewModels?

你通常会有一个像

这样的 MainViewModel
class MainViewModel
{
    public ReservationListViewModel ReservationListViewModel { get; set; }
    public ReservationDetailViewModel ReservationDetailViewModel { get; set; }
}

并且会在你的 XAML 中使用它

<Window.DataContext>
    <local:MainViewModel/>
</Window.DataContext>

<local:ReservationListView DataContext="{Binding ReservationListViewModel}"/> 
<local:ReservationDetailView DataContext="{Binding ReservationDetailViewModel}"/> 

您的 UserControl 不需要任何带参数的构造函数。