【问题标题】:How to reload page when navigating导航时如何重新加载页面
【发布时间】:2014-06-26 17:24:46
【问题描述】:
我正在开发 WPF MUI 应用程序。我使用按钮 onclick 导航到另一个页面并在 page1.xaml 上打印一些文本。在我使用另一个按钮导航以在 page1.xaml 上打印另一个文本之后。但我不能这样做。我的输出不是新文本。它只是早期的详细信息。不能重新加载 page1.xaml。导航时我传递了参数并根据参数在同一页面上打印参考文本。有人可以帮我吗?
这是我的导航代码
var frame = NavigationHelper.FindFrame(null, this);
frame.Source = new Uri("../Content/Sale/SaleInvoice/Nested/saleNested.xaml", UriKind.Relative);
【问题讨论】:
标签:
c#
wpf
navigation
reload
modern-ui
【解决方案1】:
将页面数据绑定到 ViewModel。一旦你想刷新,只需创建一个新的 Viewmodel。在 backgroudworker 中执行重新加载是有意义的,这样您的 UI 才能保持响应。如果您从 webService 或其他在线资源中刷新某些资源,这将特别有用。
【解决方案2】:
数据在初始时绑定到页面以重新加载页面我正在使用此方法
在 xaml 页面上只需添加 Loaded 属性:
<UserControl x:Class="ModernUINavigationApp1.Pages.Page"
...
Loaded="OnLoad" >
然后在后面的代码中添加事件处理程序,使页面在加载时做任何你想做的事情
private void OnLoad(object sender, RoutedEventArgs e)
{
}
希望有帮助:D
【解决方案3】:
确保您的 ViewModel 实现了INotifyPropertyChanged。如果您的 Page1.xaml 的 DataContext 设置为 ViewModel,并且您的 XAML 正确使用绑定,则对 ViewModel 的任何更改都将反映在 UI 中。你不需要刷新任何东西。只需更新 ViewModel 对象中的属性即可。
如果您使用示例 XAML 和 C# 更新您的问题,我可以提供更多帮助。