c# - 这是在一个框架内导航页面的正确方法,它也在另一个页面框架中?(WPF)
问题描述
所以在这张图片中,它包含一个框架,页面应该显示在哪里(当前显示的页面是父页面的当前来源)
我找到了这个存储库,只是为了使用导航服务,但是它只使用RootFrame
. 所以我做了一些改变
// INavigationService.cs
interface INavigationService
{
string CurrentPageKey { get; }
void GoBack();
void NavigateTo(string frame, string pageKey);
void NavigateTo(string frame, string pageKey, object parameter);
}
// FrameNavigationService.cs
public virtual void NavigateTo(string frameName, string key, object parameter)
{
...
if(GetDescendantFromName(Application.Current.MainWindow, frameName) is Frame frame)
...
}
并使用了这段代码:
// MainViewModel
public RelayCommand LoadPage1Command
=> loadPage1Command ?? (loadPage1Command = new RelayCommand(() => navigationService.NavigateTo("Page1")));
// Page1ViewModel
public RelayCommand LoadedCommand
=> loadedCommand ?? (loadedCommand = new RelayCommand(() => navigationService.NavigateTo("Page1_Frame", "Page1_1")));
我不知道这是否是在框架内导航页面的方式。如果修改后的代码不好,我可以使用任何行为设计模式来替代它吗?
解决方案
推荐阅读
- excel - 查询的电源查询顺序
- google-chrome - Chrome 扩展:从内容到后台脚本的消息传递
- javascript - 解释 Chrome 开发工具中的丢帧
- c++ - CreateProcess 无法运行 sfc.exe ?为什么
- kubernetes - 我应该在微服务应用程序中的哪里实现忘记密码功能?
- php - 在 laravel 中存储为 .tmp 的图像
- html - 我的代码中的悬停不起作用,我正在使用 sass
- google-chrome - chrome浏览器的网络进程什么时候关闭
- python - 如何通过允许用户使用 plotly 和 python with streamlit 选择列来绘制条形图
- python - 我将如何过滤格式与其他格式不同的 pandas 数据框中的数据?