【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>

関連記事

【iPhoneアプリ】開発者登録手順(iOS Developer Program) その1

iPhoneアプリの作成からリリースまでの一通りの流れを体験したかったため、 簡単なiPhon

記事を読む

no image

【XAML/VB.NET】XAMLファイルを帳票フォーマットとして使用する

掲題について。結論としてはFixedPageをルートとするXAMLファイルを XamlReader

記事を読む

no image

Azure へ WordPress 環境を作成

よくあるやつだけど。 社内LT用

記事を読む

【iPhoneアプリ】リリース手順〜iTunesConnect登録〜

AppStoreに有料アプリ、iAdアプリを公開するためには、 iTunes Connectで

記事を読む

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

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

記事を読む

no image

【TFS2013】Visual Studio 2005 Professional から TFS2013へ接続

こんにちは。 私の周りではいまだにレガシーな開発環境を使いつづけているプロジェクトが多いです。

記事を読む

no image

No registered resource provider found for location ‘Japan East’ and API version ‘2.0’ for type ‘servers’.

Visual Studio から Azure Web Apps をデプロイするときに発生したエラーの

記事を読む

IntelliTestはどこまでカバーしてくれるのか

私はレガシーな開発環境・案件が多かったのですが、 この頃、ユニットテストを利用する機会が増えてきま

記事を読む

【.NET】16進数文字列から色を設定する

文字列→Colorクラスへの変換メモ プログラム上でFromArgbメソッドに16

記事を読む

【iPhoneアプリ】リリース手順〜プロビジョニングプロファイルを作成する〜

リリース前にDistribution Provisioning Profileを作成する 手順

記事を読む

Message

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

PAGE TOP ↑