【问题标题】:WPF Programmatically Enable TextBox Scrolling/Panning for TabletsWPF 以编程方式为平板电脑启用 TextBox 滚动/平移
【发布时间】:2018-07-13 15:51:03
【问题描述】:

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

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

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

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

popupScrollView.PanningMode = PanningMode.Both;

popupScrollView 对象随后被设置为弹出窗口中的内容。

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

【问题讨论】:

  • 请添加一些代码示例来重现此问题。

标签: c# wpf scroll textbox tablet


【解决方案1】:

我对触控设备也有同样的问题。我有一个棘手的方法来处理这类问题

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

UIElement_OnTouchDown(object sender, TouchEventArgs e)事件发生时,您可以通过eventArgs.GetTouchPoint(this).Position.Y保持触摸位置的位置。

之后,你可以通过观察位置的变化来判断是否发生了滚动。

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

【讨论】:

    【解决方案2】:

    我认为你需要使用三个属性来实现这一点。

    ScrollViewer.PanningMode
    ScrollViewer.PanningDeceleration
    ScrollViewer.PanningRatio
    

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-14
        • 2015-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多