2017-03-26 10 views
0

私はuwpアプリケーションを開発しています。バックグラウンドスレッドからUI要素(トグルスイッチ)にアクセスしたい私はトグルスイッチの状態(オンまたはオフ)を取得できるメソッドを作成しました。このメソッドで値を取得しようとすると、常にトグルスイッチの値が同じになります。ui要素へのアクセス中に常に同じ値を得る

私の方法は以下の通りです。

public bool GetMoldState 
{ 
    get { return MoldTry.IsOn; } 
} 

バックグラウンドスレッドiアクセスUI要素からは、次のようになります。

await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, 
() => 
{ 
    MainPage mp = new MainPage(); 
    isMoldTryOn = mp.GetMoldState; 
} 
); 

トグルスイッチボタンの現在の状態を正しく取得するにはどうすればよいですか?

+1

あなたがメインページの新しいインスタンスを作成しているたびに、このようにあなたが同じ値を取得します。 * MainPage *コントロールの値を取得したい場合は、他のメソッドからアクセスできるように公開するか、* Binding *を使用して適切なプロパティをチェックするようにする必要があります。 – Romasz

+0

実際に私は一度(バックグラウンドスレッドが起動すると)一度インスタンスを作成しようとしましたが、値は同じですが値は同じです。メインページを公開するにはどうすればよいですか? – Cozdemir

答えて

4

MainPageの新しいインスタンスを作成するときに、アプリケーションがそのページに移動するときに作成されたインスタンスを使用する代わりに、値を取得しようとします。

実際に使用されているインスタンスの値を取得できるMainPageでは、public staticプロパティを使用することをお勧めします。

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

それは動作します!皆さん、本当にありがとうございます。 – Cozdemir

関連する問題