我有一个 ScrollViewer ,它包含一个 StackPanel (垂直),它包含我设计的一些非常宽的自定义控件。 ScrollViewer 允许用户水平滚动以显示自定义控件。
当我使用鼠标输入模拟器时,我得到一个滚动条,这很好。当我使用模拟器的触摸输入时,我可以通过拖动自定义控件滚动,但仅限于某些区域。如果我尝试在自定义控件中的 Canvas 元素上开始拖动,则它不起作用。但是,如果我在画布外部(在边距空间等)中拖动我的触摸,它会按照您期望的方式工作。
画布中有一些操作事件处理程序,用于自定义控件中的各种功能。这些是否有可能窃取输入,以便 ScrollViewer 无法完成它的工作?如果是这样的话,我可以做些什么让他们向 ScrollViewer 报告输入?还是我在错误的地方调查?
我可以按要求发布代码。
修改
经过进一步调查后,我发现了一些东西。我的广泛控制内部有一些(其他)自定义控件和一堆线。当我在一条线上开始拖动时,它就像预期的那样拖动。所有其他空间都填充了第二个自定义控件(它非常紧凑)。事实证明我的自定义控件正在窃取输入。我在第二个自定义控件中取消选中主画布上的所有类型的交互,并将 Manipulation 设置为比例而不是系统。将这些设置回默认值可以解决问题。
答案 0 :(得分:0)
经过进一步调查后,我发现了一些东西。我的广泛控制内部有一些(其他)自定义控件和一堆线。当我在一条线上开始拖动时,它就像预期的那样拖动。所有其他空间都填充了第二个自定义控件(它非常紧凑)。事实证明我的自定义控件正在窃取输入。
重要部分:
我在第二个自定义控件中取消选中主画布上的所有类型的交互,并将 Manipulation 设置为比例而不是系统(这可能是窃取输入的部分)。将这些设置回默认值可以解决问题。
PS:我感到愚蠢