我遇到过一个奇怪的场景,框架拒绝刷新其内容。
我能理解发生了什么,但我没有找到解决方案。
我有一个页面,其中有一个框架(Frame1)和几个按钮。当我单击按钮时,页面就会加载到框架中。这在大多数情况下都很有效。
Private Sub btnIncidents_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnIncidents.Click
Frame1.Source = New System.Uri("/Incident/Incidents.xaml", UriKind.Relative)
End Sub
但是,我遇到了一种情况,我需要选择之前单击的按钮才能有效地对 Uri 进行刷新。问题是它什么也没做,因为 Uri 没有改变。这是有道理的,但这不是我想要的,我需要再次调用它。
我的第一个解决方案是引入 Frame1.Refresh,它最初起到了作用。但是一旦刷新页面,所有按钮都无法加载不同的页面。
就好像通过调用 Frame1.Refresh 我破坏了 Frames 导航到其他页面的能力。
我的第二个想法是将 Frame 源设置为 Nothing(Null),然后将源设置为 URI,但这也不起作用。即 Frame1.Source = Nothing
还有其他人遇到过这个问题或者有一些建议吗?我只需要刷新/重新加载框架页面而不破坏框架!
我也有类似的问题 - 不过 html 。解决了
frame.NavigationService.Refresh();
显然会清除导航历史记录,但就我而言,我并不关心。
从http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/8fc6bd83-2803-4820-a22b-d4d87638c4e2
得到答案我知道这已经很旧了,但我也遇到了同样的问题。我已将框架的源绑定到视图模型中的属性,当单击菜单项时,它将重新设置指定源的属性,从而导致发生导航。问题是两个子菜单项访问了相同的 URI 源(该页面将在构造函数中调用时重新加载以获取更新的数据)。 URI 未更改的事实导致页面无法重新加载。我的简单技巧是包含两个调用之间不同的查询字符串。所以第一个 URI 看起来像:
SomePage.xaml?UserControl=1
第二个像:
SomePage.xaml?UserControl=2
我知道这很“hacky”并且远非完美,但我毕竟是新手,而且它对我有用。在我弄清楚这一点之前,我花了两天的时间把头撞在墙上并咒骂流行的搜索引擎,所以希望它可以帮助其他人。