在XAML / C#中防止ListView的返回(回车),向上和向下箭头键的默认
发布时间:2020-12-15 23:27:19 所属栏目:百科 来源:网络整理
导读:当列表视图具有焦点时,按下回车键的默认行为是选择列表视图的第一个元素,向上和向下箭头键滚动列表视图.我试图阻止这种默认行为并挂钩我的自定义逻辑. 我可以使用KeyDown为列表视图实现Access键,如下所示: 代码背后的方法: CoreWindow.GetForCurrentThread
当列表视图具有焦点时,按下回车键的默认行为是选择列表视图的第一个元素,向上和向下箭头键滚动列表视图.我试图阻止这种默认行为并挂钩我的自定义逻辑.
我可以使用KeyDown为列表视图实现Access键,如下所示: 代码背后的方法: CoreWindow.GetForCurrentThread().KeyDown += KeyDownHandler; MVVM方法: <ListView SelectedIndex="{Binding IsSelected,Mode=TwoWay}"/> 触发Keydown属性: <core:EventTriggerBehavior EventName="KeyDown"> <core:InvokeCommandAction Command="{x:Bind VMDataContext.KeyDownCommand}" /> </core:EventTriggerBehavior> 并使用行为将列表视图的滚动条滚动到所选索引: <corebehaviors:ListViewScrollBehaviour SelectedIndex="{x:Bind IsSelected,Mode=OneWay}"/> 当listview没有焦点时,上面的处理程序会被触发.当列表视图具有焦点时,箭头向上,向下和Enter键的默认行为将被触发,而不是我的附加行为.有没有办法防止默认行为? 解决方法
考虑扩展ListView控件并重写OnKeyDown处理程序.
public class ExtendedListView : ListView { protected override void OnKeyDown(KeyRoutedEventArgs e) { if (e.Key == VirtualKey.Enter || e.Key == VirtualKey.Up || e.Key == VirtualKey.Down) { return; } base.OnKeyDown(e); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |