Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

UWPで要素をソフトウェアキーボードに追従させる

$
0
0

雪猫さんのところでこんな感じのことをやってました。

[UWP] 要素をソフトウェアキーボードに追従させる | 雪猫ノート

こういう感じでUIに閉じた操作ならBehaviorのほうがいいかな?と思ったのでどんな感じなのかというのを。

using Microsoft.Xaml.Interactivity;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;

namespace App2
{
    publicclass InputPaneBehavior : DependencyObject, IBehavior
    {
        public DependencyObject AssociatedObject { get; private set; }

        private FrameworkElement AssociatedElement => this.AssociatedObject as FrameworkElement;

        publicvoid Attach(DependencyObject associatedObject)
        {
            this.AssociatedObject = associatedObject;
            InputPane.GetForCurrentView().Showing += this.InputPaneBehavior_Showing;
            InputPane.GetForCurrentView().Hiding += this.InputPaneBehavior_Hiding;
        }

        publicvoid Detach()
        {
            InputPane.GetForCurrentView().Showing -= this.InputPaneBehavior_Showing;
            InputPane.GetForCurrentView().Hiding -= this.InputPaneBehavior_Hiding;
        }

        privatevoid InputPaneBehavior_Hiding(InputPane sender, InputPaneVisibilityEventArgs args)
        {
            this.AssociatedElement.Margin = new Thickness(0, 0, 0, sender.OccludedRect.Height);
        }

        privatevoid InputPaneBehavior_Showing(InputPane sender, InputPaneVisibilityEventArgs args)
        {
            this.AssociatedElement.Margin = new Thickness(0, 0, 0, sender.OccludedRect.Height);
        }

    }
}

こんな感じのBehaviorを用意しておいて

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="using:App2"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:Interactivity="using:Microsoft.Xaml.Interactivity"xmlns:Core="using:Microsoft.Xaml.Interactions.Core"x:Class="App2.MainPage"mc:Ignorable="d"><Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"><Grid.RowDefinitions><RowDefinition /><RowDefinition Height="Auto" /></Grid.RowDefinitions><TextBox /><Grid Grid.Row="1"><Interactivity:Interaction.Behaviors><local:InputPaneBehavior /></Interactivity:Interaction.Behaviors><Button Content="OK" /></Grid></Grid></Page>

こういう感じで使います。

因みに、CommandBarでいい気がするのですが、今のところCommandBarの上のボタンってソフトウェアキーボードが出てると押せなかったり押せたりと動作が不安定なんですよね…。


Viewing all articles
Browse latest Browse all 1387

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>