【问题标题】:How to find controls in frame?如何在框架中找到控件?
【发布时间】:2016-07-24 05:34:14
【问题描述】:

在我的应用程序中,我有一个带有框架、page1 和 page2 的母版页。当应用程序启动时,母版页会在一个框架中加载 page1。那时我可以使用masterpage中的以下代码在page1中找到控件(TextBox,GridView)。

private  void Page_Loaded(object sender, RoutedEventArgs e)
{
    Frame rootFrame = Window.Current.Content as Frame;
    Page mainPage = rootFrame.Content as MasterPage;
    Frame myframe = mainPage.FindName("frameBody") as Frame;          
    Page page1 = frame.Content as Page1;
    Page page2 = frame.Content as Page2;
    Button btnpage = page1.FindName("btnPage2") as Button;
}

当我导航page2 或在框架中加载page2 时,我无法使用相同的代码在page2 中找到控件(TextBox、GridView)。

【问题讨论】:

  • 你看过visualtreehelper吗?
  • 嗯..你在page1中寻找btnPage2 ....

标签: c# xaml win-universal-app uwp uwp-xaml


【解决方案1】:

当您执行Frame.Navigate(newPage) 时,您将释放对旧内容的所有引用,它会被垃圾收集。如果要持久化数据,则需要缓存数据。如果您需要保留控件,那么您可能需要重新考虑您的架构。

您的问题的答案是,您看不到控件的原因是因为它们不再存在于可视化树中。它们被移除并收集垃圾。解决这个问题的方法是缓存它们。

参考资料:

MSDN Frame Documentation

Reference Source - Frame.cs

因为您的下一个问题将是如何在页面之间保留数据,请查看

MSDN Frame.Navigate(Type,Object) Documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多