Wpf - viewmodel tworzy inne view...?

Wpf - viewmodel tworzy inne view...?
S9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

cześć, uczę się podstaw mvvm i chciałem sobie zrobić prosty projekcik.
założenie jest takie

VmGlowne:

jest listView z użytkowinkami

Kopiuj
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:

Kopiuj
public UserDetailsView(User user, UserViewModel vm)
       {
           vm.User = user;
           InitializeComponent();
       }

Jednak tu bindowanie nie zadziała. sam widok (UserDetailsView) wyglada mniej wiecej tak:

Kopiuj
 <Window.DataContext>
        <vm:UserViewModel/>
    </Window.DataContext>

...

 <TextBox Text="{Binding User.Details.DisplayName, Mode=TwoWay}" Grid.Column="1" Grid.Row="0" />
nerdxg
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 47
1

Bo w konstruktorze UserDetailsView nie ustawiasz DataContext

Kopiuj
DataContext = vm;

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.