【发布时间】:2017-05-31 17:39:23
【问题描述】:
我正在为 wpf 使用 mvvmlight 框架。 我有放置框架的主窗口(firstLoadedPage 只是一个示例):
<Frame Source="firstLoadedPage" />
当我点击按钮时,我想将我的页面更改为另一个页面
第一个加载页面
但我不知道如何实现它。 我已经尝试将这样的属性绑定到框架源:
public static string _myFrameSourcePath = firstLoadedPage
public string MyFrameSourcePath
{
get { return _myFrameSourcePath; }
set {
_myFrameSourcePath = value;
RaisePropertyChanged("MyFrameSourcePath");
}
}
然后在我单击 firstLoadedPage 中的按钮时更改 _myFrameSourcePath 的值。它不起作用,所以我尝试将 MyFrameSourcePath 更改为静态,然后在 Page 中更改 MyFrameSourcePath 的值而不是 _myFrameSourcePath。它也不起作用。
当我单击此页面内的按钮将当前页面更改为另一个页面时,有人可以告诉我如何更改放置在 MainWindow 框架源中的页面吗?
【问题讨论】:
-
当你写
<Frame Source="firstLoadedPage" />的时候,你这里是不是少了一个绑定?它应该类似于<Frame Source="{Binding MyFrameSourcePath}" />。此外,请确保您设置了公共MyFrameSourcePath属性,该属性也将调用属性更改通知,而不是私有_myFrameSourcePath。在相关说明中,我不确定这是否是同一件事,但我不久前写了this answer 关于使用 MVVM 导航...也许它会帮助您朝着正确的方向前进? -
重点是这只是一个例子。我之前将来自 Frame 的 Souce 与 MainWindowViewModel 中实现的属性绑定。我想通过单击 MyPage.xaml 中的按钮从 MainWindowViewModel 覆盖此属性,这应该更改我在 Source 中的 uri 路径,但即使对于静态变量它也不起作用。