しっぽを追いかけて

ぐるぐるしながら考えています

Unity と猫の話題が中心   掲載内容は個人の私見であり、所属組織の見解ではありません

Windows アプリで表示した 2 画面の表示ウィンドウを交換する

前回書き忘れましたが、ProjectionManager を利用するとタスクバーのプレビューウィンドウも2つになります

f:id:matatabi_ux:20140624054819p:plain

ここで ProjectionManager.SwapDisplaysForViewsAsync というメソッドを使ってみます

if (!ProjectionManager.ProjectionDisplayAvailable)
{
    return;
}

var appView = ApplicationView.GetForCurrentView();
ApplicationView newView = null;

// クリックしたタイルの画像 Uri
var imageUri = ((e.ClickedItem as ItemContainerViewModel).Content as PhotoViewModel).ImageUri;

// 新しいアプリケーション画面を作る
var view = CoreApplication.CreateNewView();
await view.Dispatcher.RunAsync(
    CoreDispatcherPriority.Normal,
    async () =>
    {
        var newWindow = Window.Current;
        newView = ApplicationView.GetForCurrentView();

        var grid = new Grid();
        var image = new Image();
        grid.Children.Add(new Image()
        {
            Source = new BitmapImage(new Uri(imageUri)),
        });

        // 新しいアプリケーション画面のウィンドウに画像を埋め込み
        newWindow.Content = grid;

        // 同一アプリのアプリケーション画面として別画面に投影開始
        await ProjectionManager.StartProjectingAsync(newView.Id, appView.Id);
    });

await Task.Delay(500);

// 表示画面を交換する
await ProjectionManager.SwapDisplaysForViewsAsync(newView.Id, appView.Id);

すると表示ウィンドウが切り替わりました

f:id:matatabi_ux:20140624055608p:plain

プレビューの位置関係は変わらずです

f:id:matatabi_ux:20140624054819p:plain

通常の Navigate だとうまく動かないので 2 画面目の画面遷移はどうやってやるのがいいのか悩ましいですね