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

関連記事

WordPressでスパムコメント対策

WordPressのスパムコメント対策を行ったのでメモ。 標準でAkismetがインストール済み(

記事を読む

no image

【VB.NET】async および await キーワードの使用

.NET Framework4.5(C#5.0, VB11.0)の新機能 Async/Awai

記事を読む

Xamarin.FormsのTabbedPageでバッジを表示する

iOSのタブバーはNative側でバッジ機能があるのだが、Androidにはそもそもバッジが無いらし

記事を読む

no image

【WPF/XAML】Visibility変更時のアニメーション切替

ストーリーボードを使わずに、Visibility変更でアニメーションを発生させたかった。 やってる

記事を読む

no image

Microsoft Bot Frameworkでテキストメッセージではなく、添付ファイルを使用する

activity.Attachmentsに添付ファイル入っている。 ContentTypeで画像か判

記事を読む

Xamarin Studio から Visual Studio for Mac へ変更してから、”The “XamlCTask” task failed unexpectedly.” が発生。

Visual Studio for Mac がGAしたので、インストールしてみた。 それまで開発して

記事を読む

no image

Xamarin.Forms で ScrollView の中に Map を配置したとき、Androidで地図のスクロールが出来なくなる

iOSは問題ないけど、AndroidはScrollViewにタッチを持ってかれてる感じ。 カスタ

記事を読む

【XAML】フォントサイズを自動縮小して全体を表示

Viewboxを親にするだけ。 拡大・縮小方法はStretch, StretchDirec

記事を読む

no image

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

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

記事を読む

初心者でも手順どおりに従うだけでロゴ画像が作れる

Webサイトを作ったので、ここを参考に ロゴ制作の練習をしました。  

記事を読む

Message

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

PAGE TOP ↑