使用Mvvm

时间:2016-04-21 18:55:59

标签: wpf xaml mvvm user-controls

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

创建了一个应该包含这两个用户控件的预约窗口。

我得到了什么:

  • ReservationView(窗口)
  • ReservationListView(Usercontrol)
  • ReservationDetailView(Usercontrol)

ReservationView(Window)类

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

ReservationListView(Usercontrol)类:

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

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

ReservationListViewModel

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

    }
}

当我尝试设置本地时:" usercontrol"在ReservationView里面的xaml中,我收到以下错误:

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

当我使用MVVM时,如何将这两个usercontrol链接到相应的viewModel?

1 个答案:

答案 0 :(得分:5)

你通常会有像

这样的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}"/> 

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

相关问题