cześć, uczę się podstaw mvvm i chciałem sobie zrobić prosty projekcik.
założenie jest takie
VmGlowne:
jest listView z użytkowinkami
public class User
{
public int Id{get;set;}
public string Name{get;set;}
public UserDetails Details{get;set;}
}
w pierwszym VM mam zbindowaną listView z List<User>
Mam też przycisk "pokaż szczegóły", tutaj jest command
i w nim...
chcę wywołać nowe okno (UserDetailsView)
które bindowałbym z UserDetailsViewModel
w tym oknie były by szczegółowe informacje usera (obiekt User.Details)
ale jak to zrobić:
w Execute umieściłem
var view = new UserDetailsView(_vm.InvitationChoosenUser, VmGlowne);
view.Show();
zaś samo UserDetailsView w konstruktorze ma:
public UserDetailsView(User user, UserViewModel vm)
{
vm.User = user;
InitializeComponent();
}
Jednak tu bindowanie nie zadziała. sam widok (UserDetailsView) wyglada mniej wiecej tak:
<Window.DataContext>
<vm:UserViewModel/>
</Window.DataContext>
...
<TextBox Text="{Binding User.Details.DisplayName, Mode=TwoWay}" Grid.Column="1" Grid.Row="0" />