【问题标题】:Stop a scrollviewer from scrolling on key up/down停止滚动查看器向上/向下滚动键
【发布时间】:2012-07-30 21:18:08
【问题描述】:

我有一个包含子视图的滚动查看器。如果该子视图中的任何内容具有焦点并且我按下向下/向上键,则内容向下/向上滚动。

如果我不是刚刚实现了一个基于箭头键的导航系统,这不会是一个问题。所以我使用这 4 个箭头键更容易地在对象之间导航。现在的问题是当用户向上或向下按下时内容会滚动。我想禁用滚动行为。

我已经尝试了几件事:

  • 向滚动查看器添加 KeyDown 事件,但它永远不会被命中。
  • 在滚动查看器上将 istabstop 设置为 false
  • 在我的滚动查看器内的网格上将 keyeventargs “handled”设置为 true,它会在我的代码执行(导航)之前被调用,所以也不能使用它。

编辑

这是在 XAML 中处理事件的方式:

<i:Interaction.Behaviors>
    <catel:KeyPressToCommand Command="{Binding CancelCellInputCommand}" Key="Escape" />
    <catel:KeyPressToCommand Command="{Binding LeftArrowNavigationCommand}" Key="Left"/>
    <catel:KeyPressToCommand Command="{Binding UpArrowNavigationCommand}" Key="Up"/>
    <catel:KeyPressToCommand Command="{Binding RightArrowNavigationCommand}" Key="Right"/>
    <catel:KeyPressToCommand Command="{Binding DownArrowNavigationCommand}" Key="Down"/>
</i:Interaction.Behaviors>

我可能会尝试阻止我的内容向上/向下滚动的任何其他解决方案?

编辑 2:

经过更多研究,我发现第 1 点之所以会这样,是因为滚动查看器吃掉了 keydown 事件,可能是为了让滚动发生。不过,我还没有找到解决它的方法。有人说他将他的“IsTabStop”设置为假,但这根本没有区别。捕捉 KeyUp 确实有效,但为时已晚,无法阻止键滚动。我最后的办法是不要使用向上/向下键来做我想要的,但是在单元格中向上和向下需要向上/向下键,这只是逻辑。

感谢您对此的任何帮助和想法,因为我真的被这件事困住了。

【问题讨论】:

  • 您的导航系统是如何实现的?在窗口中使用键绑定?通过处理 PreviewKeyDown ?
  • @VincentPiel:更新了问题,你可以看到我现在是如何得到我的事件了。

标签: vb.net xaml silverlight-4.0 scroll


【解决方案1】:

如果您处理按键隧道事件PreviewKeyDown,您可以获得该事件的OriginalSource,然后尝试找到它的可视祖先,即ScrollViewer。如果您找不到 ScrollViewer 祖先,请像以前一样处理您的密钥。如果你找到了,那就什么都不做。

【讨论】:

  • 我的第三个要点是您的建议:我抓住了事件,并设置 e.Handled = true。问题是每次需要执行自定义时,即使视觉父级是滚动查看器。我只是不想让它滚动。
  • 所以如果它来自滚动查看器的后代(例如 PreviewKeyDown 中的 e.Handled = true ),您需要捕获它,然后从另一个控件重新发送密钥...
  • 或者我不确定你是否不应该处理后面代码中的键。不那么“漂亮”,但更简单的解决方案会带来更好的代码。
  • 如果它涉及纯 UI 交互,我在使用代码隐藏时没有任何问题。但有一件事,SL 中的滚动查看器上没有预览操作。
【解决方案2】:

终于在Silverlight forums上找到了东西。

毕竟,它类似于 Vincent Piels 解决方案,它使用 PreviewKeyDown 事件,但它需要一个自定义子 (contentcontrol) 事件才能在 XAML 中使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 2015-07-17
    • 2015-09-22
    相关资源
    最近更新 更多