Как мне перейти от ViewModel? - PullRequest
1 голос
/ 07 марта 2012

Я пишу маленькое придуманное приложение WPF для университетского проекта, и я пользуюсь возможностью изучить шаблон MVVM.Я реализовал свое начальное окно запуска, которое будет страницей входа в систему.

Я связал кнопку входа в систему с командой, полученной из ICommand, которая вводится с помощью LoginViewModel.Затем LoginViewModel проверяет клиента с помощью созданной мной службы WCF.

У меня такой вопрос: как только модель представления получает уведомление о том, что проверка правильна, как мне перейти на следующую страницу / окно из модели представления?Я не хочу создавать экземпляр нового окна внутри модели представления.Должен ли я использовать страницы здесь вместо этого?Я стремлюсь понять лучшие практики с самого начала, я не хочу тратить свое время на изучение плохих способов сделать это.

Спасибо.

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Вместо изменения представлений вы можете изменить видовые модели и использовать ContentControl, чтобы связать видовые модели с конкретными представлениями: создайте главное представление поверх других представлений, которые будут управлять изменениями представлений с помощью команд (в этом примере установите CurrentViewModel из ваш командный обработчик):

    <UserControl.Resources>
        <DataTemplate DataType="{x:Type vm:LoginViewModel}">
            <local:LoginView/>
        </DataTemplate>
        <DataTemplate DataType="{x:Type vm:FirstPageViewModel}">
            <local:FirstPageView/>
        </DataTemplate>
    </UserControl.Resources>
    <ContentControl Content="{Binding Path=CurrentViewModel}" />

Таким образом, вам не нужно смешивать Views и ViewModels, вы не создаете представления из виртуальных машин. На самом деле в моем случае это была дочерняя страница, которая запрашивала изменение представления с событием.

0 голосов
/ 07 марта 2012

Я не делал страниц, но для вашего экрана входа в систему я бы LoginViewModel выставил LoggedInEvent.

Затем вы можете заставить родительскую ViewModel создать LoginViewModel и уничтожить его снова, когда поднимется LoggedInEvent (и создайте все новые представления, которые вам нужны).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...