Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 绑定交互触发焦点边界_C#_Wpf_Wpf Controls - Fatal编程技术网

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();
    }
}