かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

UWPでWindowのアクティブ状態を取りたい

ほしいときにぱっととる事はできなさそうです。

ということで、Window.Current.CoreWindowのActivatedイベントでとっておく必要があります。

こんな感じで

// どこかでイベントを購読して
Window.Current.CoreWindow.Activated += CoreWindow_Activated;

// こんな感じで状態をとっておく
private CoreWindowActivationState State { get; set; }

private void CoreWindow_Activated(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.WindowActivatedEventArgs args)
{
    // アクティブかどうかの状態をフィールドあたりにとっておく
    this.State = args.WindowActivationState;
}

CoreWindowActivationState列挙体は、以下の値をもってます。

CoreWindowActivationState Enumeration (Windows)

  • CodeActivated: Activateによりアクティブ化された
  • Deactivated: 非アクティブ
  • PointerActivated: マウスやタッチでアクティブ化された

この値を見ることで、アクティブかどうかが判定できます。アクティブかどうかで見た目を変えるとかできそうですね。