Wpf - viewmodel tworzy inne view...?

Odpowiedz Nowy wątek
2019-03-02 09:43

Rejestracja: 4 lata temu

Ostatnio: 1 rok temu

0

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" />

Pozostało 580 znaków

2019-03-02 14:05

Rejestracja: 4 lata temu

Ostatnio: 3 miesiące temu

Bo w konstruktorze UserDetailsView nie ustawiasz DataContext

DataContext = vm;
ale jeśli tak bym zrobił to musiałbym całe bindowanie ustawic w code-behind, a nie w xamlu - sandman91 2019-03-03 08:14
soróweczka, działa jak należy - sandman91 2019-03-03 08:20

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0