UWP 访问现有页面实例
UWP access existing page instance
我正在开发带有 NavigationView
的 UWP 应用,用于在 Page
之间导航。
一个ConnectionPage
是用来打开和管理socket连接的,所以有SendCommand
和Receive
等方法。其他 CameraPage
需要访问此方法。如果我导航到 ConnectionPage
这个 class 的一个实例是正常创建的,如果我导航到 CameraPage
这个 class 是创建的,一切都是应该的。
我现在的问题是,如何在 CameraPage
中使用 ConnectionPage
的连接和方法?
MainPage.xaml.cs导航
private void NavView_Navigate(NavigationViewItem item) {
switch (item.Tag) {
case "home":
rootFrame.Navigate(typeof(HomePage)); break;
case "connection":
rootFrame.Navigate(typeof(ConnectionPage)); break;
case "camera":
rootFrame.Navigate(typeof(CameraPage)); break;
}
}
我在以前的项目中的方法是将 Connection
class 的实例传递给需要它的 classes 的构造函数。
感谢大家
当您从一个页面导航时,该页面将从内存中删除(只要没有任何东西保存在那里,在这种情况下您可能会发生内存泄漏)。
解决这个问题的正确方法是创建一个单独的 class,它将包含您需要的方法并且对两个页面都可用 - 它可以是 static
class 或更好的单例 class (class 只有一个实例)。在任何情况下,要使单个状态对象可用于多个页面,您必须将其从页面中分离出来,放入一个新的 class.
我正在开发带有 NavigationView
的 UWP 应用,用于在 Page
之间导航。
一个ConnectionPage
是用来打开和管理socket连接的,所以有SendCommand
和Receive
等方法。其他 CameraPage
需要访问此方法。如果我导航到 ConnectionPage
这个 class 的一个实例是正常创建的,如果我导航到 CameraPage
这个 class 是创建的,一切都是应该的。
我现在的问题是,如何在 CameraPage
中使用 ConnectionPage
的连接和方法?
MainPage.xaml.cs导航
private void NavView_Navigate(NavigationViewItem item) {
switch (item.Tag) {
case "home":
rootFrame.Navigate(typeof(HomePage)); break;
case "connection":
rootFrame.Navigate(typeof(ConnectionPage)); break;
case "camera":
rootFrame.Navigate(typeof(CameraPage)); break;
}
}
我在以前的项目中的方法是将 Connection
class 的实例传递给需要它的 classes 的构造函数。
感谢大家
当您从一个页面导航时,该页面将从内存中删除(只要没有任何东西保存在那里,在这种情况下您可能会发生内存泄漏)。
解决这个问题的正确方法是创建一个单独的 class,它将包含您需要的方法并且对两个页面都可用 - 它可以是 static
class 或更好的单例 class (class 只有一个实例)。在任何情况下,要使单个状态对象可用于多个页面,您必须将其从页面中分离出来,放入一个新的 class.