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キーボードをプログラムでドッキングして、ウィンドウを最大化できますか?
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
仮想キーボードは、そのような要素がフォーカスを取得すると開き、要素がフォーカスを失うと閉じます。
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
内にさらに注意深く記述する必要があります。
お役に立てれば!