Reputation: 1811
I need some help binding the viewModel to the two usercontrol views I have created.
Have created a Reservation Window that should contain these two usercontrols.
What i got:
ReservationView (Window) class
public partial class ReservationView : Window
{
public ReservationView()
{
InitializeComponent();
//DataContext = null;
}
}
ReservationListView (Usercontrol) class:
public partial class ReservationListView : UserControl, IViewReservationListViewModel
{
public ReservationListView(IViewReservationListViewModel viewModel)
{
InitializeComponent();
DataContext = viewModel;
}
}
The IViewReservationListViewModel is just a empty interface which makes the contact between the usercontrol view and the viewModel.
ReservationListViewModel
public class ReservationListViewModel : INotifyPropertyChanged, IViewReservationListViewModel
{
public ReservationListViewModel()
{
}
}
When I try to set the local:"usercontrol" in the xaml inside ReservationView, I get the following error:
The type "ReservationListView" does not include any accessible constructors.
How should I link those two usercontrol to the respective viewModels when I use MVVM?
Upvotes: 2
Views: 15199
Reputation: 128061
You would usually have a MainViewModel like
class MainViewModel
{
public ReservationListViewModel ReservationListViewModel { get; set; }
public ReservationDetailViewModel ReservationDetailViewModel { get; set; }
}
and would use it in your XAML like
<Window.DataContext>
<local:MainViewModel/>
</Window.DataContext>
<local:ReservationListView DataContext="{Binding ReservationListViewModel}"/>
<local:ReservationDetailView DataContext="{Binding ReservationDetailViewModel}"/>
Your UserControls wouldn't need any constructors with parameters.
Upvotes: 10