Wpf 列表框始终自动选择第一项
ListBox的行为是自动选择第一项,我如何避免这种情况Wpf 列表框始终自动选择第一项,wpf,listbox,selecteditem,Wpf,Listbox,Selecteditem,ListBox的行为是自动选择第一项,我如何避免这种情况 注意:我更喜欢使用纯xaml,如果您有任何代码隐藏的想法,请不要打扰自己。您可以将SelectedIndex设置为-1: <ListBox ItemsSource="{Binding MyData}" SelectedIndex="-1"/> 注意:我想用纯xaml实现这一点,如果您有任何代码隐藏的想法,那么请不要自找麻烦 不幸的是,您不能在XAML中完成所有操作。。。通常可以避免代码落后,但仍需要编写转换器、标记扩展或
注意:我更喜欢使用纯xaml,如果您有任何代码隐藏的想法,请不要打扰自己。您可以将SelectedIndex设置为-1:
<ListBox ItemsSource="{Binding MyData}" SelectedIndex="-1"/>
注意:我想用纯xaml实现这一点,如果您有任何代码隐藏的想法,那么请不要自找麻烦
不幸的是,您不能在XAML中完成所有操作。。。通常可以避免代码落后,但仍需要编写转换器、标记扩展或附加属性是否选择要查找的属性的索引?或者我不明白你的意思…
<ListBox SelectioMode="Single" SelectedIndex="-1"/>
我用FocusManager.FocusedElement尝试了这个方法。。并将最初的焦点转移到列表框本身。。所以它有焦点..但是没有选择任何元素。。 如果按向下键或tab..,将选择列表框的第一个元素
<Window
......
FocusManager.FocusedElement="{Binding ElementName=listbox2}">
<ListBox x:Name="listbox2" HorizontalAlignment="Left"
VerticalAlignment="Bottom" Width="117.333" Height="116"
Margin="30.667,0,0,30">
<ListBoxItem>Jim</ListBoxItem>
<ListBoxItem>Mark</ListBoxItem>
<ListBoxItem>Mandy</ListBoxItem>
</ListBox>
吉姆
做记号
曼迪
添加一个空白项。此处为同一问题。有人找到了“干净”的解决方案吗?这里的问题也是一样,它会导致执行一系列触发器 显而易见的解决方案/解决方案:
IsSynchronizedWithCurrentItem=“False”
删除IsSynchronizedWithCurrentItem=“True”,并在需要时将其与下一个SelectionChanged事件一起添加。
这解决了我的问题这里有一个我经常使用的技巧。它以上面的示例为基础,将
FocusedElement
属性添加到窗口
或UserControl
我的约定是,我不希望窗口上的任何控件都有焦点。我的解决方案是创建一个没有UI的虚拟控件,并将焦点分配给它。恰好控件
完全符合要求:
<UserControl
x:Class="MyControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FocusManager.FocusedElement="{Binding ElementName=focus_thief}"
mc:Ignorable="d">
<Grid>
<!-- no renderable UI -->
<Control Name="focus_thief"/>
<!-- wants focus, but won't get it -->
<ListBox>
<ListBoxItem>First Item</ListBoxItem>
</ListBox>
</Grid>
</UserControl>
第一项
我想你的意思是,当你将焦点移动到列表框时,第一项总是被选中的?(突出显示..如果你按下,第二项获得焦点?)1)对于将我的问题标记为重复的人,你不理解问题,我也是发布重复的人。2) @Madi,当列表框呈现时,它的第一个项目会被自动选中,我想禁用这个功能。嗯。。您可以使用FocusManager将焦点集中到某个项目/元素..(全部在xaml中)。。。然而,我不知道如何让它什么都不关注:DI正在寻找一个和你一样的答案。唯一的小问题是它不起作用。问题是我想避免这种情况,因为选择触发了一系列执行,这些执行在SelectionChanged处理程序中处理。你明白我的意思了,但当我将selectedindex设置为-1或将SelectedItem设置为x:Null时,第一个项目仍然被选中。我不希望选择模式是单一的。相关的问题和评论应该是对现有项目的评论。非常聪明的解决方案。UI正在做一些有时是可取的事情,但如果所选项目被重新设置样式,当整个控件重新呈现时,它仍然会保留一个恼人的黑盒。您的解决方案可以防止这种情况发生,并且正好存在于它应该存在的位置。我选择将我的命名为“takefocustoavoiduisinganonselecteditem”