使用WPF编程为平板电脑启用TextBox滚动/平移功能

15

我正在使用一个WPF应用程序,该应用程序将在Windows平板电脑上使用。我遇到的问题是,我无法通过触摸屏幕并拖动内容来滚动一个大型多行文本框。但是,如果在桌面上使用鼠标滚轮,则仍然可以滚动。

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

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

我可以告诉你的是它已经起作用了,因为现在无法使用点击和拖动文本进行选择,但内容仍然不能滚动。我也设置了外部ScrollViewer的平移模式如下:

popupScrollView.PanningMode = PanningMode.Both;

然后,popupScrollView对象被设置为弹出框内的内容。

我能想到的唯一可能是我需要在更高的地方设置平移模式吗?任何帮助将不胜感激。谢谢。


请添加一些代码示例以复制此问题。 - Jagadeesh Govindaraj
3个回答

1
我和触摸设备有同样的问题。我有一个处理这种问题的棘手方法。
您需要手动处理触摸事件,我编写了一些代码来手动处理触摸事件。
当发生UIElement_OnTouchDown(object sender, TouchEventArgs e)事件时,您可以通过eventArgs.GetTouchPoint(this).Position.Y保留所触摸位置的位置。
之后,您可以通过观察位置变化来确定是否发生了滚动。
这是我的示例gist,我使用此方法解决了触摸设备的相同问题。

1
我认为您需要使用三个属性来实现这个目标。
ScrollViewer.PanningMode
ScrollViewer.PanningDeceleration
ScrollViewer.PanningRatio

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

另一件可以尝试的事情是将ScrollViewer CanContentScroll设置为true


0

虽然我不确定是否有一种仅使用wpf就可以解决这个问题的可行方法,但我建议尝试使用DoNetBrowser在wpf应用程序中实现html UI,link

然后,您可以在html中使用textarea控件,默认情况下允许您在移动设备上滚动。 希望这个答案能帮到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接