Ama*_*eno 3 c# xaml visual-studio windows-10 uwp
当列表视图具有焦点时,按下回车键的默认行为是选择列表视图的第一个元素,向上和向下箭头键滚动列表视图.我试图阻止这种默认行为并挂钩我的自定义逻辑.
我可以使用KeyDown为列表视图实现Access键,如下所示:
代码背后的方法:
CoreWindow.GetForCurrentThread().KeyDown += KeyDownHandler;
Run Code Online (Sandbox Code Playgroud)
MVVM方法:
<ListView SelectedIndex="{Binding IsSelected, Mode=TwoWay}"/>
Run Code Online (Sandbox Code Playgroud)
触发Keydown属性:
<core:EventTriggerBehavior EventName="KeyDown">
<core:InvokeCommandAction Command="{x:Bind VMDataContext.KeyDownCommand}" />
</core:EventTriggerBehavior>
Run Code Online (Sandbox Code Playgroud)
并使用行为将列表视图的滚动条滚动到所选索引:
<corebehaviors:ListViewScrollBehaviour SelectedIndex="{x:Bind IsSelected, Mode=OneWay}"/>
Run Code Online (Sandbox Code Playgroud)
当列表视图没有焦点时,上面的处理程序会被触发.当列表视图具有焦点时,箭头向上,向下和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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
892 次 |
| 最近记录: |