我正在使用将在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中的内容。
我唯一能想到的是,如果还有更高的位置我需要设置平移模式吗?任何帮助,将不胜感激。谢谢。
虽然我不确定是否有一种可行的解决方法只使用wpf,但我建议尝试使用DoNetBrowser,link在wpf应用程序中实现html UI。
然后你可以在html中使用textarea控件,默认情况下你可以在移动设备上滚动。希望这个答案对你有帮助。
我的触摸设备也有同样的问题。我有一个棘手的方法来处理这类问题
您必须手动处理触摸事件我已经编写了一些代码来手动处理触摸事件
当UIElement_OnTouchDown(object sender, TouchEventArgs e)
事件发生时,你可以通过eventArgs.GetTouchPoint(this).Position.Y
保持触及位置的位置。
之后,您可以通过观察位置变化来确定是否发生了滚动。
这是我的样本gist,我使用这种方法与触摸设备相同的问题
我认为您需要使用三个属性来实现此目的。
ScrollViewer.PanningMode
ScrollViewer.PanningDeceleration
ScrollViewer.PanningRatio
默认情况下,PanningMode
设置为None
,但将其设置为另一个值将启用触摸滚动。
你可以尝试的另一件事是将qazxsw poi qazxsw poi设置为qazxsw poi。