2

我有两个相邻的 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"/>

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

我怎么解决这个问题?

4

1 回答 1

4

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

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
于 2013-04-05T09:53:57.510 回答