C# 绑定交互触发焦点边界
我有一个列表框,用户可以在其中选择一个项目,一旦他按下右箭头,该项目就会移动到另一个面板 当我使用一个按钮来发出命令时,事情就会发生;但是当我有了这个项目并按下右箭头时,项目被添加,但是下一个项目的焦点没有正确设置,我的意思是,边框被聚焦,而不是另一个项目 我已经在列表框上设置了C# 绑定交互触发焦点边界,c#,wpf,wpf-controls,C#,Wpf,Wpf Controls,我有一个列表框,用户可以在其中选择一个项目,一旦他按下右箭头,该项目就会移动到另一个面板 当我使用一个按钮来发出命令时,事情就会发生;但是当我有了这个项目并按下右箭头时,项目被添加,但是下一个项目的焦点没有正确设置,我的意思是,边框被聚焦,而不是另一个项目 我已经在列表框上设置了IsTabStop=“False” 这就是我绑定交互触发器的方式: <i:Interaction.Triggers> <i:EventTrigger EventName="KeyDown">
IsTabStop=“False”
这就是我绑定交互触发器的方式:
<i:Interaction.Triggers>
<i:EventTrigger EventName="KeyDown">
<cal:ActionMessage MethodName="WasPressed">
<cal:Parameter Value="$eventArgs"/>
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
这就是我按下向右箭头后的样子(项目被添加,所以它工作)。请注意出现的边框:
许多WPF元素在IsFocused属性上都有一个触发器,在其周围添加一个虚线边框。这似乎正在这里发生 ListBox没有这样的触发器,所以您应该调查父元素 最简单的方法是使用Blend编辑模板的现有副本 单击元素,继续对象->编辑样式->编辑副本 然后Blend显式定义模板,您可以查找定义虚线边框的触发器
public void WasPressed(KeyEventArgs e)
{
if (SelectedItem != null && e.Key == Key.Right)
{
MoveItem();
}
}