我正在使用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内部的内容。
我唯一能想到的是,是否还有其他地方需要设置平移模式?任何帮助,将不胜感激。谢谢。
答案 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
。