访问ui元素时始终获得相同的值

时间:2017-03-26 10:32:24

标签: user-interface background uwp

我正在开发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;
}
);

如何才能正确获得切换开关按钮的当前状态?

1 个答案:

答案 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;
}
);