навигация в кадре путем изменения источника через модель представления WPF - PullRequest
4 голосов
/ 24 января 2012

Я новичок в WPF и MVVM.У меня есть Frame в mainWindowView в моем приложении WPF.Я связал источник фрейма со свойством SourcePage модели представления:

<Frame Name="frame" Content="Frame" Source="{Binding Path=SourcePage, Source={StaticResource WindowViewModel},  Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

В модели представления,

public string SourcePage
{
  get
  {
    return _sourcePage;
  }
  set
  {
    if (value != null)
    {
      _sourcePage = value;
       OnPropertyChanged("SourcePage");
    }
  }
}

Первоначально я загрузил представление selectTest в этом кадре, установив значение на исходной странице вконструктор viewmodel:

public MainWindowViewModel()
{
   SourcePage ="Std.User/SelectTest.xaml";
}

Теперь по нажатию кнопки мне нужно выполнить некоторые операции с БД, и после этого я хочу загрузить другое представление в этом кадре.

Привет, Колин, спасибо за твою помощьнемедленный ответ.Но я попробовал то же самое, и это не работает, как ожидалось.Вот мой код

public ICommand StartTestCommand
{
  get
  {
    if (_startTest == null)
    {
     _startTest = new DelegateCommand(StartTest);
    }
    return _startTest;
  }
}
private void StartTest()
{
  MainWindowViewModel mwvm = new MainWindowViewModel();
  mwvm.SourcePage = "std.user/ChangePassword2.xaml";
}

1 Ответ

0 голосов
/ 24 января 2012

Для этого:

  1. Предоставьте команду (ICommand) из вашей модели представления в качестве свойства.Это может быть связано с Button, который при нажатии выполнит вашу команду.См. Обзор команд в MSDN для примеров.
  2. Выполнение логики базы данных, необходимой для вашей модели представления, когда команда выполняется
  3. Когда она завершится, измените SourcePage свойство на следующую страницу.Представление обновится автоматически.

Возможно, вы также захотите добавить логическое свойство IsBusy к вашей модели представления, которое имеет значение true во время обработки действий базы данных.Вы можете использовать это, чтобы отключить просмотр через привязку.

...