User interface 访问ui元素时始终获取相同的值

User interface 访问ui元素时始终获取相同的值,user-interface,background,uwp,User Interface,Background,Uwp,我正在开发uwp应用程序。我想从后台线程访问ui元素切换开关。我创建了一个方法,在这里我可以得到切换开关的状态,无论它是开还是关,当我试图通过这个方法得到值时,我总是得到相同的切换开关值 我的方法如下 公共布尔GetMoldState { 获取{return MoldTry.IsOn;} } 我从后台线程访问ui元素,如下所示 等待Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsy

我正在开发uwp应用程序。我想从后台线程访问ui元素切换开关。我创建了一个方法,在这里我可以得到切换开关的状态,无论它是开还是关,当我试图通过这个方法得到值时,我总是得到相同的切换开关值

我的方法如下

公共布尔GetMoldState { 获取{return MoldTry.IsOn;} } 我从后台线程访问ui元素,如下所示

等待Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsyncCoreDispatcherPriority.Normal, => { 主页mp=新主页; isMoldTryOn=mp.GetMoldState; } ;
如何正确获取切换开关按钮的当前状态?

每次尝试获取值时,您都在创建主页的新实例,而不是使用应用程序导航到主页时创建的实例

我建议在主页中使用publicstatic属性,使用该属性可以获得实际使用的实例的值

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

每次尝试获取值时,您都在创建主页的新实例,而不是使用应用程序导航到主页时创建的实例

我建议在主页中使用publicstatic属性,使用该属性可以获得实际使用的实例的值

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

每次创建MainPage的新实例时,都会得到相同的值。如果您想获取MainPage控件的值,则必须公开它,以便可以从其他方法访问它,或者最好通过绑定并检查合适的属性来实现。实际上,我曾尝试在后台线程启动时创建实例,并访问该值,但仍然是相同的值。如何公开Mainpage?每次创建Mainpage的新实例时,都会得到相同的值。如果您想获取MainPage控件的值,则必须公开它,以便可以从其他方法访问它,或者最好通过绑定并检查合适的属性来实现。实际上,我曾尝试在后台线程启动时创建实例,并访问该值,但仍然是相同的值。我怎样才能公开主页?它是有效的!非常感谢你们两位,这很有效!非常感谢你们两位。