【问题标题】:Reset page to initial form将页面重置为初始形式
【发布时间】:2013-04-04 20:58:32
【问题描述】:

我在我的应用程序中加载了一个页面,用户对其进行了一些修改。通过按下特定页面上的按钮,我想将页面重置为其初始形式。我已经尝试过NavigationService.Navigate(new Uri("/Page1.xaml", UriKind.RelativeOrAbsolute));,但它不起作用,因为 From 和 To 页面是相同的。另外,我曾想过在两者之间放置一个新页面,但这听起来很糟糕。此外,如果我不必无缘无故地导航到另一个页面来搞砸导航历史记录(即后退按钮),那将是最好的。那么页面重置的任何解决方案?谢谢。

【问题讨论】:

  • 用户做了哪些改变?你可以重置值吗(即从文本框中删除文本,将文本块重置为原始值,删除图像,删除列表等......应该不会太难。如果你有一个更复杂的用户界面(比如用户四处走动)网格/在屏幕上绘图)您仍然可以使用此技术。
  • 这是最后的手段。我必须写一个非常大的方法来重新安排周围的东西。
  • 我猜你可以尝试删除 Layout 的内容,然后使用 XAMLLoader 重新加载 UI...social.msdn.microsoft.com/forums/en-US/wpf/thread/…

标签: silverlight windows-phone-7


【解决方案1】:

我找到了正确的答案。为了将页面重置为其初始形式,您必须执行以下操作:

void buttonResetPage_Click(object sender, RoutedEventArgs e)
{
     this._contentLoaded = false;
     InitializeComponent();

     // other initializations found in your page constructor
}

它对我有用。 :)

【讨论】:

  • 谢谢,这帮助很大。感觉不对,但效果很好。
  • 我的答案是在 2011 年发布的。这个错误很可能在过去 3 年的操作系统版本中已修复/更改。
【解决方案2】:

我是通过以下方式做到的:

ContentFrame.Content = New {pagename}

这会将包含我的网页 page1、page2 等的 contentFrame 设置为该页面的全新实例。然后,这会重新加载该页面上的所有内容、布局,并再次从数据库中获取数据。这种方式对我有用。

【讨论】:

  • 听起来不错,但我没有应用程序来再次测试问题,所以我无法标记您的回答。我能做的就是点赞。 :)
  • ContentFrame 不作为 API 存在,项目中是否需要特殊参考?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 2020-02-05
  • 1970-01-01
  • 1970-01-01
  • 2017-07-31
  • 1970-01-01
相关资源
最近更新 更多