web-dev-qa-db-ja.com

WPFにドッキングされているWindows10タッチキーボードを開きます

Windows 8でWPFタッチアプリケーションの作成を開始し、最近Windows 10に移行しました。実装した機能の1つは、TextBoxがフォーカスを受け取ったときにWindowsキーボードを開くことです。 Windows 8では、レジストリ設定EdgeTargetDockedStateを設定し、TabTipプロセスを開始することで、キーボードを下部にドッキングすることができました。

     string path =  @"C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe";
     var info = new ProcessStartInfo(path);
     info.WindowStyle = ProcessWindowStyle.Maximized;
     var p = new Process();
     p.StartInfo = info;
     p.Start();

ただし、Windows 10キーボードは、Windows 8と同じドック動作をしていないようです。キーボードは、アプリケーションの下部を非表示にする最大化されたウィンドウをオーバーレイするようになりました。最大化されていないウィンドウのみが、残りのスペースに合わせてサイズ変更されます。

次のリンクを確認しましたが、解決策が見つかりませんでした。

Windows 10キーボードをプログラムでドッキングして、ウィンドウを最大化できますか?

13
Bruno V

WPFアプリでのTabTip統合に関するすべてを自動化するために、プロジェクトをオープンソース化しました。

nuget で取得できます。その後、必要なのは、アプリの起動ロジックでの単純な構成だけです。

TabTipAutomation.BindTo<TextBox>();

TabTip自動化ロジックを任意のUIElementにバインドできます。仮想キーボードは、そのような要素がフォーカスを取得すると開き、要素がフォーカスを失うと閉じます。それだけでなく、TabTipAutomationはUIElement(またはWindow)をビューに移動するため、TabTipはフォーカスされた要素をブロックしません。

詳細については、 プロジェクトサイト を参照してください。

明確にするために:このパッケージを使用する場合、TabTipはドッキングされませんが、UIは表示されます。これは、達成したかったことだと思います。

この記事を確認してください: http://www.codeproject.com/Tips/1120263/Virtual-Keyboard-TabTip-integration-in-WPF-on-Win

仮想キーボードは、そのような要素がフォーカスを取得すると開き、要素がフォーカスを失うと閉じます。

2
swdev95

EDIT:WindowStyleがNoneに設定されている場合は、ここで私の answer をチェックしてください。また、タッチキーボードの出現イベントを手動で処理する場合は、サンプルコード ここ を確認してください。

ここでの答えはかなり古いものです。現在、ウィンドウが最大化されていても、テキストボックスをタップするとタッチキーボードは問題なく機能します。

そのバージョンで修正されたWPFのバグのため、Windows 10でタッチキーボードの最高のサポートを得るために、少なくとも.NET 4.6.2をターゲットにすることをお勧めします。 詳細はこちら 、WPFセクションまで下にスクロールします。

あなたがしなければならない唯一のことは、タッチキーボードが現れたときにあなたのユーザーインターフェースが適切に反応できるようにXAMLを設計することです。通常、コンテンツをScrollViewerの中に入れるだけで十分です:

<ScrollViewer PanningMode="VerticalOnly"
              VerticalScrollBarVisibility="Hidden" 
              HorizontalScrollBarVisibility="Disabled"
    <!--Content here-->
</ScrollViewer>

ただし、キーボードの下から上にあるボタンを移動するなど、より高度なシナリオでは、動的な高さのグリッドを使用するなどして、XAMLをScrollViewer内にさらに注意深く記述する必要があります。

お役に立てれば!

0
Shahin Dohan