通过 WPF 视图模型更改源在框架中导航
Posted
技术标签:
【中文标题】通过 WPF 视图模型更改源在框架中导航【英文标题】:navigation in frame by changing the source through WPF view model 【发布时间】:2012-02-17 10:54:31 【问题描述】:我是 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";
现在点击按钮,我需要执行一些数据库操作,然后我想在该框架中加载另一个视图。
您好 Colin,感谢您的即时回复。但我也尝试过,但它没有按预期工作。这是我的代码
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】:要实现这一点:
-
将视图模型中的命令 (
ICommand
) 公开为属性。这可以绑定到Button
,单击它会执行您的命令。有关示例,请参阅 MSDN 上的 Commanding Overview。
执行命令时在视图模型中执行所需的数据库逻辑
完成后,将SourcePage
属性更改为下一页。视图将自动更新。
您可能还想在您的视图模型中添加一个IsBusy
布尔属性,这在处理您的数据库活动时是正确的。您可以使用它来禁用您通过绑定查看。
【讨论】:
以上是关于通过 WPF 视图模型更改源在框架中导航的主要内容,如果未能解决你的问题,请参考以下文章
wpf c#通过DependencyProperty绑定两个视图模型不起作用