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

関連記事

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

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

記事を読む

no image

Windows 10 IoT 系の概要、エディション、入手方法などを一度整理

Windows 10 IoT にここ最近振り回されているので、ここまで解釈した内容にて、まとメモ 正

記事を読む

拡張温度に対応した Windows 10 IoT Core ボード

Windows 10 IoT Core 対応ボード その2 こっちは拡張温度対応している。 Ban

記事を読む

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

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

記事を読む

[UWP]Releaseビルド時に、OData.ClientでSystem.Reflection.MissingMetadataExceptionが発生する

UWPでDebugビルドでは問題ないけど、Releaseビルドにすると、Microsoft.ODat

記事を読む

Docker for Windows で ドライブ共有が出来ない

Shared Drives タブで Cドライブにチェックをして Apply を押す。 認証ダイ

記事を読む

【WPF/XAML】チェックボックスのデザイン変更

[xml] <Window x:Class="Sample"

記事を読む

no image

【C#, WPF】XMLデータをListViewに表示し、チェック項目のみXML保存させる

前回の続きというか、WPF版。 <Window x:Class="MyWP

記事を読む

no image

RPi3 OmxPlayer / VLC Player 連続再生2回目から映像が乱れる問題

Raspberry Pi 3 Model の Ubuntu や Raspbian で OmxPlay

記事を読む

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

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

記事を読む

Message

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

PAGE TOP ↑