読者です 読者をやめる 読者になる 読者になる

かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

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

UWP

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

ということで、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: マウスやタッチでアクティブ化された

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