【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

Microsoft.Expression.Encoderで動画のフレーム画像を取得

動画ファイルから指定したフレーム画像を取得する。 Microsoft.Expression.Enco

記事を読む

no image

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

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

記事を読む

[OxyPlot]errro CS0117: ‘Resource.Attribute’ に ‘mediaRouteSettingsDrawable’ の定義がありません

Xamarin.Formsでグラフ描画を行う方法のひとつにOxyPlotというライブラリがある。

記事を読む

【iPhoneアプリ】多言語対応させる2

今回はコード内の文字列を多言語化する ファイルを追加する。  

記事を読む

Xcode標準テンプレート

Xcodeで新規Projectを作成した時にテンプレートを選ぶことが出来る。 「Choose a

記事を読む

Visual Studio から Android SDK Managerが起動できない

Android SDKやエミュレーターイメージのアップデートを行いたい場合にAndroid SDK

記事を読む

no image

Xamarin.FormsのAndroidでスプラッシュ画面

Xamarin.Formsでアプリを作成した時、iOSは起動時にLauncher.storyboar

記事を読む

no image

【Xcode】Capabilities全項目【v6.1時点】

Capabilitiesの各項目が何を示しているのか よくわからなかった、かつ日本語のサイトが少な

記事を読む

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

MacBook Pro + Bootcamp + Windows10 で Docker for Wi

記事を読む

no image

FixedDocumentの印刷およびXPS形式での保存

こんにちは。 以前、XAMLファイルを帳票テンプレートとして動的ロードする記事を掲載しました。

記事を読む

Message

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

PAGE TOP ↑