簡體   English   中英

觸摸鍵盤隱藏 UI 元素 [Windows 10 和 WPF]

[英]Touch Keyboard Hiding UI Element [Windows 10 & WPF]

我正在使用 .NET 5 為 Windows 10 編寫一個“可觸摸”WPF 應用程序。

我一直在 Stack Overflow 上尋找答案,但我沒有找到任何答案,這就是我問它的原因。

首先,我的 MainWindow 不是“最大化”,我的 WindowStyle 不是“無”。

<Window
    x:Class="App1234.Views.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:prism="http://prismlibrary.com/"
    xmlns:notifications="clr-namespace:Notification.Wpf.Controls;assembly=Notifications.Wpf"
    Title="App1234"
    d:DesignHeight="1200"
    d:DesignWidth="1920"
    prism:ViewModelLocator.AutoWireViewModel="True"
    Background="{DynamicResource MaterialDesignPaper}"
    FontFamily="{materialDesign:MaterialDesignFont}"
    Loaded="MainWindow_OnLoaded"
    TextElement.FontSize="14"
    TextElement.FontWeight="Medium"
    TextElement.Foreground="{DynamicResource MaterialDesignBody}"
    mc:Ignorable="d">

我可以觸摸下方的文本框,然后觸摸鍵盤打開。 但是我看不到控件,因為鍵盤隱藏了它。 我想“調整”我的應用程序以便仍然看到控件

如何在 WPF 應用程序中實現此行為?

謝謝你,亞瑟

更新:

我們還以沒有 uiAcess 標志的管理員身份啟動了我們的應用程序。 解決方案(除了回復)是刪除管理員要求。

我正在從事與 OP 相同的項目。

我們發現了這個https://github.com/microsoft/WPF-Samples/tree/master/Input%20and%20Commands/TouchKeyboard 在此示例中,Microsoft 提供了一些代碼來解決 WPF 與 .net 框架的問題。

現在這適用於他們的用例。 但我一直在嘗試使用 NET 5 項目來實現他們的代碼。 不出所料,這似乎是不可能的(應用程序只是在啟動時崩潰並溢出)

那么有誰知道是否有辦法讓應用程序同時使用 NET 5 和 .net 框架?

或者

將 Microsoft 的修復移植到 Net 5 中,這樣我們也可以使用它!

謝謝。

更新

因此,經過進一步的重新搜索,我發現如何在這篇文章http://mheironimus.blogspot.com/2015/05/adding-touch-keyboard-support-to-wpf.html的幫助下解決我們的問題。 還有這個https://stackoverflow.com/a/57463543/14620831

    private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{
var elementWithFocus = Keyboard.FocusedElement as FrameworkElement;

    if ((elementWithFocus != null) && ((e.PreviousSize.Height > e.NewSize.Height)))
    {
        elementWithFocus.BringIntoView();
    }
}

這兩個鏈接都有助於了解出了什么問題。 首先,xaml 必須以 windows 可以在鍵盤出現時調整應用程序大小的方式進行編碼,基本上一個帶有堆棧面板的滾動查看器就可以了。

但這僅足以使 window 調整大小,這是代碼片段允許滾動查看器“滾動”到單擊的元素並將其顯示在虛擬觸摸鍵盤上方的時候。

THX到其他海報,希望這篇文章也能幫助其他人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM