Dab*_*rnl 4 .net wpf listbox selecteditem
好吧,这必须是一个重复的问题,但我找不到答案:我有一个数据集到数据集的列表框.默认情况下,选择项目[0].我如何防止这种情况,以确保在我单击ListBoxItem时提出SelectionChanged事件?
编辑:我已经解除了SelectedIndex = -1路由,但我再次尝试:在Listbox的构造函数中将SelectedIndex设置为-1(或作为XAML中的属性)不起作用.似乎在初始化之后填充了列表框,并且selectedIndex将在all.Same故事之后变为0,用于将SelectedItem设置为null;
我试过这个:
<ListBox ItemsSource="{Binding Value}"
SelectionChanged="ListBox_SelectionChanged"
IsSynchronizedWithCurrentItem="True"
Loaded="ListBox_Loaded">
</ListBox>
Run Code Online (Sandbox Code Playgroud)
有:
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if(e.AddedItems.Count==0)return;//Prevents stackoverflow! ;-)
((ListBox)e.OriginalSource).SelectedItem=null;
}
private void ListBox_Loaded(object sender, RoutedEventArgs e)
{
((ListBox) sender).SelectedItem = null;
}
Run Code Online (Sandbox Code Playgroud)
这是有效的,但它在列表框显示的项目顶部插入一个空行,这非常难看....在我的特定情况下,我可以通过删除IsSynchronizedWithCurrentItem属性来解决问题.
但我可以想到许多情况,这是不可接受的.
上面的语句是无意义的:要么您想要使用主 - 细节绑定并将IsSynchronizedWithCurrentItem设置为true,要么您不想.您不太可能希望使用主 - 详细信息绑定,然后始终在列表框中没有当前选定的项目
运行一些测试后,ListBox的默认行为是不预先选择列表中的项目.删除IsSynchronizedWithCurrentItem ="True"将确保列表框未预先选择,并且当用户单击任何项目时将引发SelectionChanged事件.
如果将IsSynchronizedWithCurrentItem设置为true,则意味着selectedIndex将始终等于ListBox.Items的ListBox.Items.CurrentItem的索引.ListBox.Items总是有一个CurrentItem,由于CurrentItem或CurrentIndex是只读的,所以不能设置为-1或null.
希望能帮助J
编辑...刚读完
"在我的具体情况我可以通过删除IsSynchronizedWithCurrentItem属性解决这个问题,但我能想到的许多场景中,这是无法接受的."
在这种情况下,我不认为上述原因是可能的.
| 归档时间: |
|
| 查看次数: |
5526 次 |
| 最近记录: |