我正在开发uwp应用程序。我想从后台线程访问ui元素(切换开关)。我创建了一种方法,我可以获得切换开关状态(是打开还是关闭)当我尝试通过这种方法获得值时,我总是得到相同的切换开关值。
我的方法如下。
public bool GetMoldState
{
get { return MoldTry.IsOn; }
}
从后台线程我访问ui元素如下。
await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
MainPage mp = new MainPage();
isMoldTryOn = mp.GetMoldState;
}
);
如何才能正确获得切换开关按钮的当前状态?
答案 0 :(得分:4)
每次尝试获取值时,都会创建MainPage
的新实例,而不是使用应用导航到页面时创建的实例。
我建议在public static
中使用MainPage
属性,您可以使用该属性获取实际使用的实例的值。
public static MainPage Current { get; private set; }
public MainPage()
{
Current = this;
// Other things
}
然后您就可以从以下任何地方访问它的值:
await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
isMoldTryOn = MainPage.Current.GetMoldState;
}
);