トルネード

毛利のメモ書き

UWP VC++ 画面遷移 Navigate

Visual Studio VC++ 2017UWPでの画面遷移

以前C#での方法でも書いたが、Navigateを使う。

VC++でのNavigate

画面にボタンを配置し、クリックイベントを作る。

あらかじめ作っておいた「空白のページ」の名前はpage2

作成されたイベントメソッド内に下記を記述する。

 Frame->Navigate(page2::typeid);

page2が表示されたらタイトルバー戻るボタンを表示させる。

OnNavigatedToという仮想関数をoverrideで用意する。

void app::page2::OnNavigatedTo(NavigationEventArgs^ e)
{
    using namespace Windows::UI::Core;
    SystemNavigationManager::GetForCurrentView()->AppViewBackButtonVisibility = Frame->CanGoBack ? AppViewBackButtonVisibility::Visible : AppViewBackButtonVisibility::Collapsed;

}

上記の方法でタイトルバー戻るボタンが表示できる。

タイトルバー戻るボタンイベントを作成する。

アプリケーションの基盤であるAppクラスにmodoru関数を追加する。

void app::App::modoru(Object ^ sender, Windows::UI::Core::BackRequestedEventArgs ^ e)
{
    //throw ref new Platform::NotImplementedException();
    Frame^ rootFrame = dynamic_cast<Frame^>(Window::Current->Content);
    if (rootFrame->CanGoBack && e->Handled == false)
    {
        e->Handled = true;
        rootFrame->GoBack();
    }
}

これは、Appクラスの、protected側に追加した。 同じくAppクラスOnLaunched側でBackRequestedとmodoru関数を紐付ける

void App::OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ e)
{
///省略
    using namespace Windows::UI::Core;
    SystemNavigationManager::GetForCurrentView()->BackRequested += ref new Windows::Foundation::EventHandler<Windows::UI::Core::BackRequestedEventArgs^>(this,&App::modoru);

}

f:id:mojeld:20180924103601g:plain