2016-12-07 27 views
0

ビューのディスパッチャを取得する方法のいくつかを次に示します。UWPでウィンドウのディスパッチャを取得する

Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher

Windows.ApplicationModel.Core.CoreApplication.GetCurrentView()。CoreWindow.Dispatcher

最初のものはメインビューのディスパッチャを返し、後者はアクティブなディスパッチャを返します表示、 アクティブではないビューのディスパッチャを取得するにはどうすればよいですか?

答えて

2

ディスパッチャにアクセスするビューへの参照が必要です。何とか保存する場合は、下記を参照してください。別の方法としては、これを呼び出すことにより、すべてのビューにアクセスすることができます。

IReadOnlyList<CoreApplicationView> views = CoreApplication.Views; 

しかしビューが直接アクセス識別子を持っていないので、あなたは、ビューがそれをディスパッチャで活性化された後、次を呼び出すことにより、識別子を取得する必要があります:

await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => { 
    Frame frame = new Frame(); 
    frame.Navigate(typeof(SecondaryPage), null); 
    Window.Current.Content = frame; 
    // You have to activate the window in order to show it later. 
    Window.Current.Activate(); 

    newViewId = ApplicationView.GetForCurrentView().Id; 
}); 

それから私は、IDSとあなたのビュー間のマッピングを持っているために、独自のIDictionary<int, CoreApplicationView>を作成することをお勧め。また、あなたはまた、いくつかの最近の経験の後

newViewId = ApplicationView.GetApplicationViewIdForWindow(newView.CoreWindow); 

(さらにいくつかのdocumentation

1

でIDを取得することができ、私は、ディスパッチャへの参照を格納に対してお勧めします。代わりに、すべてのXAMLコントロールには独自のCoreDispatcherがあるため、UIコードを実行するページ/コントロールに頼ってください。そうすれば、あなたは正しいディスパッチャを持っていることを確信しています。欠けている場合、何かが間違っているという兆候です。 xamlソースからのコード:

関連する問題