【UWP】矢印キーでのフォーカス移動

公開日: : Blog, Microsoft , , ,

FocusManagerで上下左右のフォーカス遷移が出来るので、その仕組みを利用してやるビヘイビアを作成。

Behaviorを使えるようにする

NuGetでMicrosoft.Xaml.Behaviors.Uwp.Managedを追加

Behavior作成

public class FocusBehavior : Behavior<TextBox>
{
    protected override void OnAttached()
    {
        base.OnAttached();
        AssociatedObject.KeyDown += AssociatedObject_KeyDown;
    }
    
    protected override void OnDetaching()
    {
        base.OnDetaching();
        AssociatedObject.KeyDown -= AssociatedObject_KeyDown;
    }

    private void AssociatedObject_KeyDown(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)
    {
        if(e.Key == Windows.System.VirtualKey.Enter)
        {
            FocusManager.TryMoveFocus(FocusNavigationDirection.Next);
        }
        else if (e.Key == Windows.System.VirtualKey.Down)
        {
            FocusManager.TryMoveFocus(FocusNavigationDirection.Down);
        }
        else if (e.Key == Windows.System.VirtualKey.Up)
        {
            FocusManager.TryMoveFocus(FocusNavigationDirection.Up);
        }
        else if (e.Key == Windows.System.VirtualKey.Left)
        {
            FocusManager.TryMoveFocus(FocusNavigationDirection.Left);
        }
        else if (e.Key == Windows.System.VirtualKey.Right)
        {
            FocusManager.TryMoveFocus(FocusNavigationDirection.Right);
        }
        else
        {
            return;
        }
        e.Handled = true;
    }
}

Behavior利用

<TextBox Grid.Row="0" Grid.Column="0">
    <Interactivity:Interaction.Behaviors>
        <local:FocusBehavior />
    </Interactivity:Interaction.Behaviors>
</TextBox>

関連記事

no image

This project references NuGet package(s) that are missing on this computer.

.nugetフォルダが設定されているソリューションから一部プロジェクトのみを抜き出すと発生する。 N

記事を読む

Xamarin.Forms + Visual Studio Team Services ビルドタスクで自動バージョンアップ

Visual Studio Team Services で Xamarin.Forms の継続的デリ

記事を読む

シマンテックインストール時に「指定されたパスが空です。」

Windows10 64bit, Symantec Endpoint Protection はおそら

記事を読む

【Cocos2d-x】iPhone実機でプロジェクトを動かすまで

Macを購入してCocos2d-xデビューしたが、 iPhone実機で動かすまでをメモ

記事を読む

Hardware assisted virtualization and data execution protection must be enabled in the BIOS

MacBook Pro + Bootcamp + Windows10 で Docker for Wi

記事を読む

no image

【ストアアプリ】資格情報の保存と読み込み

こんにちは。 Windowsストアアプリで資格情報をセキュアに保存する方法について。

記事を読む

Xamarin iOS, Android での位置情報、Bluetoothの有効化メモ

OSが勝手に出してくれたりくれなかったりのところを整理するためのメモ 諸事情によりサンプルはXama

記事を読む

【iPhoneアプリ】リリース手順〜審査完了後〜

前回からの続き。 中身が無いアプリだったのでリジェクトされると思いきや 審査に通ってしま

記事を読む

【WPF/XAML】Colorsクラスのカラーテーブル

http://msdn.microsoft.com/ja-jp/library/system.win

記事を読む

【iPhoneアプリ】自分のiPhoneへインストールする方法

自作のiPhoneアプリを自分のiPhone上で動作させたい場合の手順をメモ ・iOS Dev

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

PAGE TOP ↑