wpf - WPF-如何在单击树视图超链接时重新加载同一页面
问题描述
我有一个不使用 MVVM 的 WPF 应用程序,我们在后面的代码中编写代码,其中我有一个带有超链接的树视图。我使用以下代码在页面之间交换
private void MnuMain_RequestNavigate(object sender,
System.Windows.Navigation.RequestNavigateEventArgs e)
{
this.MainContent.Content = null;
this.MainContent.Resources.Clear();
this.MainContent.Navigate(e.Uri, UriKind.RelativeOrAbsolute);
}
MainContent 是一个框架,我在其中显示点击的页面
如果单击页面,则代码将通过上述行,然后转到调用 InitializeComponent() 的页面的构造函数。但是,如果再次单击链接,则不会调用单击页面中的构造函数。我想重新加载页面单击相同的链接,就像它在网络表单中的完成方式一样。如果我在页面之间交换,页面会重新加载,但如果我单击相同的链接,它不会重新加载。
解决方案
我找到了我们必须使用以下代码的解决方案,它将再次调用页面的构造函数
this.MainContent.NavigationService.Refresh();
但如果我们遵循它,它就行不通 this.MainContent.Navigate(e.Uri, UriKind.RelativeOrAbsolute);
所以为了解决这个
- 在构造函数中创建一个属性,用于存储最后点击的链接
App.Current.Properties["lastclickedlink"] = "";
然后
private void MnuMain_RequestNavigate(object sender,
System.Windows.Navigation.RequestNavigateEventArgs e)
{
this.MainContent.Content = null;
this.MainContent.Resources.Clear();
if (App.Current.Properties["lastclickedlink"].ToString() == e.Uri.ToString())
{
this.MainContent.NavigationService.Refresh();
}
else
{
this.MainContent.Navigate(e.Uri, UriKind.RelativeOrAbsolute);
}
App.Current.Properties["lastclickedlink"] = e.Uri.ToString();
}
推荐阅读
- python - 根据属性获取类?
- python - 在我的 matplotlib 图的轴之外添加一个图像
- javascript - EmberJS 测试:在组件内部测试组件
- ios - Swift,将数字转换为字符串,数字被四舍五入
- javascript - 世博永远不会奏效
- python - 测试列表中的任何项目是否是另一个字符串列表的一部分
- database - 有效更新 Firestore Flutter 中的数据并防止多次写入
- python - 我无法在 FourSquare API 中获取类别和层次结构
- database - 《部落冲突》和其他游戏如何有效地对玩家进行排名和匹配?
- qt - 如何在 gnome centos 7 上配置新会话以仅运行我的 qml 界面?