gpt4 book ai didi

c# - 防止键盘打开时页面屏幕向上滚动(C#-XAML-Windows Store App)

转载 作者:行者123 更新时间:2023-11-30 17:42:41 25 4
gpt4 key购买 nike

通常当 TextBox 获得焦点时,软键盘会打开,但问题是默认情况下,打开键盘时页面会向上移动,而当用户关闭键盘时,页面会再次移动到之前的位置通过点击屏幕。

我需要将页面移动到某个 Y。而且我需要能够在单击“完成”按钮时关闭键盘,而不仅仅是在我点击屏幕时关闭键盘。

我试图找到正在滚动的页面的默认 ScrollViewer:TextBox 上的两个事件:

private void PNotesTextBox_GotFocus(object sender, RoutedEventArgs e)
{
var parentScrollViewer = FindParent<ScrollViewer>(this);
parentScrollViewer.VerticalScrollMode = ScrollMode.Enabled;
parentScrollViewer.ChangeView(null, offset, null, true);
parentScrollViewer.UpdateLayout();
}

private void PNotesTextBox_Tapped(object sender, TappedRoutedEventArgs e)
{
offset = e.GetPosition(PNotesTextBox).Y - 10;
}

在 MainPage 构造函数中:

    var inputPane = InputPane.GetForCurrentView();
inputPane.Showing += OnShowingInputPane;


private async void OnShowingInputPane(InputPane sender, InputPaneVisibilityEventArgs args)
{
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
var parentScrollViewer = FindParent<ScrollViewer>(this);
parentScrollViewer.VerticalScrollMode = ScrollMode.Enabled;
offset = 580 - args.OccludedRect.Top;
parentScrollViewer.ChangeView(null, offset, null, true);
parentScrollViewer.UpdateLayout();
});
}

public static T FindParent<T>(FrameworkElement reference)
where T : FrameworkElement
{
FrameworkElement parent = reference;
while (parent != null)
{
parent = parent.Parent as FrameworkElement;

var rc = parent as T;
if (rc != null)
{
return rc;
}
}
return null;
}

当我在 10.6"1024x768 (4:3 100%)10.6"1366x768 (16:9 100%) 模拟器上部署我的应用程序时,它运行良好并且键盘以 ScrollViewer 滚动且 TextBox 处于正确位置的方式显示,仅适用于这两种分辨率。

问题是我应该让它在所有屏幕分辨率下都以相同的方式工作。任何帮助我如何使我的代码动态适用于所有屏幕尺寸?

最佳答案

来自documentation

当触摸键盘出现时,它会自动重新定位您的 UI 以确保获得焦点的元素保持可见。这可能会导致 UI 的其他重要区域移出屏幕。但是,您可以禁用默认行为并在触摸键盘出现时进行自己的 UI 调整

触摸键盘上的按键操作会引发 KeyDown 和 KeyUp 事件,就像硬件键盘上的按键操作一样。但是,触摸键盘不会引发 Ctrl+A、Ctrl+Z、Ctrl+X、Ctrl+C 和 Ctrl+V 的输入事件,这些事件保留用于输入控件中的文本操作

有一个相当不错的例子here

关于c# - 防止键盘打开时页面屏幕向上滚动(C#-XAML-Windows Store App),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31746416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com