wpf listview失去了焦点

wpf listview失去了焦点,wpf,listview,Wpf,Listview,我在WPF中有一些ListView控件的奇怪行为 <l:PlainView x:Key="tileView" ItemTemplate="{StaticResource centralTile}" ItemHeight="120" ItemWidth="130" /> 我们正在开发C#中的应用程序 <l:PlainView x:Key="tileView" ItemTemplate="{S

我在WPF中有一些ListView控件的奇怪行为

    <l:PlainView x:Key="tileView"
            ItemTemplate="{StaticResource centralTile}"
            ItemHeight="120" ItemWidth="130" />
我们正在开发C#中的应用程序

    <l:PlainView x:Key="tileView"
            ItemTemplate="{StaticResource centralTile}"
            ItemHeight="120" ItemWidth="130" />
我用一些项目创建了ListView,并将SelectedIndex设置为中的一些索引 列表的中间部分。然后我在ListView的任意位置单击鼠标,然后 然后使用向上/向下的键盘键导航,一切都能完美工作。但如果 我将焦点移动到另一个控件,然后尝试将焦点设置回ListView 以编程方式控制,然后我就遇到问题了

    <l:PlainView x:Key="tileView"
            ItemTemplate="{StaticResource centralTile}"
            ItemHeight="120" ItemWidth="130" />
ListView获得焦点,但当我™I’我正试着用电脑导航 键盘,当前选择将被取消,第一项将被删除 选中,导航将从列表中的第一项开始

    <l:PlainView x:Key="tileView"
            ItemTemplate="{StaticResource centralTile}"
            ItemHeight="120" ItemWidth="130" />
我通过调用ListView控件的.focus()方法将焦点设置为ListView控件

    <l:PlainView x:Key="tileView"
            ItemTemplate="{StaticResource centralTile}"
            ItemHeight="120" ItemWidth="130" />
它看起来甚至像焦点中的ListView控件,但实际上没有任何项 焦点,即使SelectedIndex有一些有效值

    <l:PlainView x:Key="tileView"
            ItemTemplate="{StaticResource centralTile}"
            ItemHeight="120" ItemWidth="130" />
请帮帮我!如何以编程方式将ListView控件的焦点设置为 防止这种行为

    <l:PlainView x:Key="tileView"
            ItemTemplate="{StaticResource centralTile}"
            ItemHeight="120" ItemWidth="130" />
我发现我的listview所选索引与关注的项目不同。 谁

    <l:PlainView x:Key="tileView"
            ItemTemplate="{StaticResource centralTile}"
            ItemHeight="120" ItemWidth="130" />
在selectedindex\u changed事件中,我将所选索引设置为修复项(5),但当我按箭头键时,该项已更改。这意味着所选索引固定为5,但当前项(显示时周围有点边框)移动到箭头键位置。 无论如何,我的selecteditem被修复为5,但我的scrollviews将移动到当前项目所在的位置

    <l:PlainView x:Key="tileView"
            ItemTemplate="{StaticResource centralTile}"
            ItemHeight="120" ItemWidth="130" />
此代码位于listView1\u SelectionChanged中: listView1.SelectionMode=SelectionMode.Single; listView1.SelectedIndex=5

    <l:PlainView x:Key="tileView"
            ItemTemplate="{StaticResource centralTile}"
            ItemHeight="120" ItemWidth="130" />
我的listview有一个修改过的视图:

    <l:PlainView x:Key="tileView"
            ItemTemplate="{StaticResource centralTile}"
            ItemHeight="120" ItemWidth="130" />

我再也不知道这个问题了

    <l:PlainView x:Key="tileView"
            ItemTemplate="{StaticResource centralTile}"
            ItemHeight="120" ItemWidth="130" />

“关注”

ListView可能与ListBox存在相同的问题,因为它可以独立于其项而拥有焦点

    <l:PlainView x:Key="tileView"
            ItemTemplate="{StaticResource centralTile}"
            ItemHeight="120" ItemWidth="130" />
当我想聚焦列表框时,我需要做如下操作:

    <l:PlainView x:Key="tileView"
            ItemTemplate="{StaticResource centralTile}"
            ItemHeight="120" ItemWidth="130" />
listBox1.Focus();
if (listBox1.Items.Count > 0)
{
    var index = listBox1.SelectedIndex;
    if (index < 0) index = 0;

    var item = listBox1.ItemsContainerGenerator
                   .ContainerFromIndex(index) as ListBoxItem;
    item.Focus();
}
listBox1.Focus();
如果(listBox1.Items.Count>0)
{
var index=listBox1.SelectedIndex;
如果(指数<0)指数=0;
var item=listBox1.ItemsContainerGenerator
.ContainerFromIndex(索引)作为ListBoxItem;
item.Focus();
}
因此,这会聚焦ListBox,但是如果ListBox包含任何项目,它会聚焦所选项目,或者聚焦第一个项目(如果选中)

    <l:PlainView x:Key="tileView"
            ItemTemplate="{StaticResource centralTile}"
            ItemHeight="120" ItemWidth="130" />

我从未在WPF中使用过ListView,但您可能会使用ListView而不是ListBox来拼凑出一个类似的方法,以代替ListBoxItem。

我建议在ListBox/ListView上设置Focusable=False,这样它就无法获得独立的焦点,然后只需使用:if(uiListBox.SelectedItem!=null){(uiListBox.SelectedItem作为UIElement).Focus();}是的,我曾在主机控件上尝试过设置Focusable=False,但当列表为空时,这确实会给您带来一些奇怪的焦点问题。有时您仍然希望在空列表中设置焦点,以便捕获列表特定的快捷键等。可能会将焦点绑定到项。使用触发器计数会更好。ListView是ListBox的子项o您的示例对我来说非常有用。我唯一更改的是将listBox1.SelectedIndex也设置为0,如果(索引<0),则焦点和所选项目匹配。@r此外,uiListBox.SelectedItem甚至可能不是UIElement。至少在我的情况下它不是UIElement。没有调用。focus()通常在任何GUI/框架/语言中都是一种糟糕的做法?嘿,你找到解决方案了吗?我有完全相同的问题,无法解决它!那么,你如何设置焦点呢?
    <l:PlainView x:Key="tileView"
            ItemTemplate="{StaticResource centralTile}"
            ItemHeight="120" ItemWidth="130" />