通过WPF视图模型更改源来导航

时间:2012-01-24 06:07:24

标签: wpf mvvm navigation frame

我是WPF和MVVM的新手。我的WPF应用程序中的mainWindowView中有Frame。我已将框架源绑定到视图模型的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");
    }
  }
}

最初我通过在viewmodel构造函数中设置sourcepage值来加载该框架中的selectTest视图:

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 :(得分:0)

实现这一目标:

  1. 将视图模型中的命令(ICommand)公开为属性。这可以绑定到Button,单击时将执行您的命令。有关示例,请参阅MSDN上的Commanding Overview
  2. 执行命令时,在视图模型中执行所需的数据库逻辑
  3. 完成后,将SourcePage属性更改为下一页。视图将自动更新。
  4. 您可能还希望向视图模型添加IsBusy布尔属性,在处理数据库活动时该属性为true。您可以使用它来禁用通过绑定查看。