在列表框中使用SelectionChanged取消选择项目时遇到麻烦

本文关键字:项目 选择 遇到 麻烦 取消 SelectionChanged 列表 | 更新日期: 2023-09-27 18:07:38

我有两个ListBox的相邻。在XAML文件中,它看起来像这样:

<ListBox Name="first_box" ItemsSource="{Binding Path=Firstlist}"  
    DisplayMemberPath="name" SelectionMode="Single" 
    SelectionChanged="Firstlist_SelectionChanged"/>
<ListBox Name="second_box" ItemsSource="{Binding Path=SecondList}"  
    DisplayMemberPath="name" SelectionMode="Single" 
    SelectionChanged="Secondlist_SelectionChanged"/>

我想做的是当一个列表框中的一个项目被选中时,另一个列表框应该失去它的选择。但是我认为失去这个选择会再次触发SelectionChanged,从而在另一个ListBox中删除选择,然后向前…

我该如何解决这个问题?

在列表框中使用SelectionChanged取消选择项目时遇到麻烦

一个解决方案是测试所选项目是否为空:

Firstlist_SelectionChanged(object o, EventArgs e)
{
    if(first_box.SelectedItem != null)
    {
        second_box.SelectedItem = null;
    }
}
Secondlist_SelectionChanged(object o, EventArgs e)
{
    if(second_box.SelectedItem != null)
    {
        first_box.SelectedItem = null;
    }
}

初始情况:

Box1 => Item1
Box2 => null

点击Box2中的项目

Box1 => Item1
Box2 => Item2 => Event fire

Box2是否为空?不,所以将Box1设置为null

Box1 => null => Event fire
Box2 => Item2

Box1是否为空?是的,没有行动。
最后的情况:

Box1 => null
Box2 => Item2