WPF以编程方式为平板电脑启用TextBox滚动/平移

时间:2018-07-13 15:51:04

标签: c# wpf scroll textbox tablet

我正在使用Windows平板电脑上使用的WPF应用程序。我遇到的问题是,我无法通过按和拖动内容在平板电脑上的大型多行TextBox中滚动。但是,它仍然可以在带有鼠标滚轮的桌面上滚动。

这个问题(Enable swipe scrolling on Textbox control in WPF Scrollviewer)似乎回答了我遇到的相同问题,但是我需要以编程方式进行。这是我要设置TextBox的平移模式的操作:

txtLongText.SetValue(ScrollViewer.PanningModeProperty, PanningMode.None);

我可以说这是可行的,因为单击和拖动文本选择现已被禁用,但是内容仍然无法滚动。我还像这样设置外部ScrollViewer的平移模式:

popupScrollView.PanningMode = PanningMode.Both;

然后将popupScrollView对象设置为Popup内部的内容。

我唯一能想到的是,是否还有其他地方需要设置平移模式?任何帮助,将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:0)

虽然我不确定是否有可行的方法来解决仅使用wpf的问题,但我建议尝试使用DoNetBrowser link在wpf应用程序内部实现html UI。

然后,您可以使用html中的textarea控件,默认情况下,该控件可让您在移动设备上滚动。 希望这个答案对您有所帮助。

答案 1 :(得分:0)

我在触摸设备上也遇到同样的问题。我有一种技巧来处理此类问题

您必须手动处理触摸事件 我已经编写了一些代码来手动处理触摸事件

发生android:layoutDirection="ltr" android:textDirection="ltr" 事件时,您可以通过UIElement_OnTouchDown(object sender, TouchEventArgs e)保持触摸位置。

在那之后,您可以通过观察位置变化来确定滚动是否发生。

这是我的示例gist ,我将这种方法用于触摸设备的相同问题

答案 2 :(得分:0)

我认为您需要使用三个属性来实现此目的。

ScrollViewer.PanningMode
ScrollViewer.PanningDeceleration
ScrollViewer.PanningRatio

默认情况下,PanningMode设置为None,但是将其设置为另一个值将启用触摸滚动。

您可以尝试的另一种方法是将ScrollViewer CanContentScroll设置为true