使用 Mvvm 时将数据上下文视图模型绑定到用户控件视图
Binding datacontext viewmodel to usercontrol view when using Mvvm
我需要一些帮助将 viewModel 绑定到我创建的两个用户控件视图。
已创建应包含这两个用户控件的预订Window。
我得到了什么:
- ReservationView (Window)
- ReservationListView(用户控件)
- ReservationDetailView(用户控件)
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 不需要任何带参数的构造函数。
我需要一些帮助将 viewModel 绑定到我创建的两个用户控件视图。
已创建应包含这两个用户控件的预订Window。
我得到了什么:
- ReservationView (Window)
- ReservationListView(用户控件)
- ReservationDetailView(用户控件)
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?
你通常会有一个像
这样的 MainViewModelclass 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 不需要任何带参数的构造函数。