silverlight按键关闭事件不存在';不要为箭头键开火
我在滚动视图中有一块画布。我在scrollview上附加了一个keydown事件处理程序。对于大多数键,会调用处理程序 但是,对于箭头键,不会调用处理程序。相反,scrollview会以适当的方向滚动 我还向scrollview附加了一个keyup处理程序,并且该keyup确实会为箭头键调用silverlight按键关闭事件不存在';不要为箭头键开火,silverlight,key,keydown,Silverlight,Key,Keydown,我在滚动视图中有一块画布。我在scrollview上附加了一个keydown事件处理程序。对于大多数键,会调用处理程序 但是,对于箭头键,不会调用处理程序。相反,scrollview会以适当的方向滚动 我还向scrollview附加了一个keyup处理程序,并且该keyup确实会为箭头键调用 有什么方法可以让arrow key down事件在这里发生吗?我找到了这个愚蠢的黑客程序来让它工作。将scrollview设置为非tabstop可防止它吃掉关键事件。。但是我在页面上有另一个文本框,它突然之
有什么方法可以让arrow key down事件在这里发生吗?我找到了这个愚蠢的黑客程序来让它工作。将scrollview设置为非tabstop可防止它吃掉关键事件。。但是我在页面上有另一个文本框,它突然之间总是有焦点,因为scrollview不再有了。所以我通过让一个不可见的文本框获得焦点来解决这个问题
scrollView.IsTabStop = false;
invisibleTextBox.Foreground = new SolidColorBrush(Colors.Transparent);
invisibleTextBox.Background = new SolidColorBrush(Colors.Transparent);
Canvas.SetZIndex(invisibleTextBox, -1000);
invisibleTextBox.KeyDown += new KeyEventHandler(HandleKeyDown);
invisibleTextBox.KeyUp += new KeyEventHandler(HandleKeyUp);
编辑:我还必须将文本框从画布上移开,因为尽管不可见,但它的轮廓仍然显示出来
第二次编辑:我使用了一个文本框,因为这是我发现的第一个可以捕获按键事件的东西。但是,用户控件可以。因此,最好使用UserControl,而不是不可见的文本框。如果需要,您可以在UserControl上调用Focus()。这是一个可能的答案-我还没有机会测试它。不过,我在过去也遇到过类似的问题,当控件在您获取事件之前就已经消费了事件。您可以尝试以下几点:
这很有效。只需设置事件参数“Handled=true”,ScrollViewer(或ListBox)就不会在处理完事件后抓住它。不过,我不需要对列表框使用IsTabStop属性;而且它似乎没有任何作用。只需使用KeyUp事件即可。工作起来像个符咒。在WPF中工作,但silverlight没有向下预览键