如何正确获取 MainPage?
How can correctly I get MainPage?
我第一次尝试 MainPage rootPage = new MainPage()
,但是这会引发错误。
所以我尝试了官方示例版本:
[MainPage.xaml.cs]
namespace theMain
{
public sealed partial class MainPage : Page
{
public static MainPage Current;
public class MainPage()
{
this.InitializeComponent();
Current = this;
}
public async void theFunctionIneedToAccess(P1, P2)
{
// Update the variable in MainPage and update the UI as well
}
}
}
[OtherCode.cs]
using theMain
namespace theOther
{
public sealed partial class OtherClass
{
MainPage rootPage = MainPage.Current; //In debugging mode, I found that I get null here
private void SmthHappening()
{
theFunctionIneedToAccess(P1, P2);
}
}
}
这至少不会引发错误,但我 为此总是得到 rootPage = null
。
我测试了统一命名空间(即 namespace theMain
两者),但这没有帮助。
我这里哪里做错了????
感谢任何帮助! :)
根据您的定义,MainPage.Current
获取当前加载的实例 MainPage
。
如果您的 MainPage.Current
始终为 null,请检查 MainPage
是否已加载到 Frame 中。当你试图在MainPage
加载之前获取MainPage.Current
时,此时Current
还没有赋值,当然会显示为null。
在App.xaml.cs中的OnLaunched
方法中,有这么一段代码:
if (e.PrelaunchActivated == false)
{
if (rootFrame.Content == null)
{
rootFrame.Navigate(typeof(MainPage), e.Arguments);
}
Window.Current.Activate();
}
请确保在这段代码执行完成后调用MainPage.Current
的方法。
此致。
更好的设计是更新应用程序的 state,然后让 UI react,而不是而不是试图直接驱动 UI。每当您与应用程序中的不同页面紧密耦合时,这表明某些东西 可能 错误。
在这种情况下,您可以在应用程序的某处存储注册用户列表(可能是静态 class,或者 App
对象的 属性,等等。 ),然后从该列表中读取 MainPage
UI。请注意 data binding 不会直接工作,因为您可能必须处理跨不同线程的访问,但是 MainPage
有自己的帮助程序代码来侦听更改事件很容易,分派到正确的线程,然后通知应用程序。
我第一次尝试 MainPage rootPage = new MainPage()
,但是这会引发错误。
所以我尝试了官方示例版本:
[MainPage.xaml.cs]
namespace theMain
{
public sealed partial class MainPage : Page
{
public static MainPage Current;
public class MainPage()
{
this.InitializeComponent();
Current = this;
}
public async void theFunctionIneedToAccess(P1, P2)
{
// Update the variable in MainPage and update the UI as well
}
}
}
[OtherCode.cs]
using theMain
namespace theOther
{
public sealed partial class OtherClass
{
MainPage rootPage = MainPage.Current; //In debugging mode, I found that I get null here
private void SmthHappening()
{
theFunctionIneedToAccess(P1, P2);
}
}
}
这至少不会引发错误,但我 为此总是得到 rootPage = null
。
我测试了统一命名空间(即 namespace theMain
两者),但这没有帮助。
我这里哪里做错了????
感谢任何帮助! :)
根据您的定义,MainPage.Current
获取当前加载的实例 MainPage
。
如果您的 MainPage.Current
始终为 null,请检查 MainPage
是否已加载到 Frame 中。当你试图在MainPage
加载之前获取MainPage.Current
时,此时Current
还没有赋值,当然会显示为null。
在App.xaml.cs中的OnLaunched
方法中,有这么一段代码:
if (e.PrelaunchActivated == false)
{
if (rootFrame.Content == null)
{
rootFrame.Navigate(typeof(MainPage), e.Arguments);
}
Window.Current.Activate();
}
请确保在这段代码执行完成后调用MainPage.Current
的方法。
此致。
更好的设计是更新应用程序的 state,然后让 UI react,而不是而不是试图直接驱动 UI。每当您与应用程序中的不同页面紧密耦合时,这表明某些东西 可能 错误。
在这种情况下,您可以在应用程序的某处存储注册用户列表(可能是静态 class,或者 App
对象的 属性,等等。 ),然后从该列表中读取 MainPage
UI。请注意 data binding 不会直接工作,因为您可能必须处理跨不同线程的访问,但是 MainPage
有自己的帮助程序代码来侦听更改事件很容易,分派到正确的线程,然后通知应用程序。