c# - 在列表框中使用 SelectionChanged 取消选择项目时遇到问题

标签 c# wpf listbox selection

我有两个彼此相邻的列表框。在 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 中的选择,依此类推...

如何解决这个问题?

最佳答案

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

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

关于c# - 在列表框中使用 SelectionChanged 取消选择项目时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15830846/

相关文章:

c# - 如何将 ListView 项与 UWP 模型外部的数据绑定(bind)?

c# - 在代码中设置 WPF 图片源

wpf - 如何在具有圆角半径的边框内设置控件样式

WPF:由于样式和/或修改的列表框,Groupstyle 无法正常工作

c# - 删除项目时的 ListBox List<T> 绑定(bind)问题

c# - 谁能详细地向我解释如何使用 IOC 容器?

c# - 使用正则表达式将给定文本中的现有网址替换为新网址

德尔福。火猴。 T列表框。滚动条可见吗?

c# - 在 C# 应用程序中使用 C-DLL?

c# - 私有(private) WPF 依赖属性