listBox中的selectedItem并关注wpf

时间:2014-05-03 01:13:58

标签: c# wpf xaml listbox focus

我在一个窗口中有两个listBox,一个在另一个旁边,带有将项目从一个listBox复制到另一个listBox的按钮。 当选择第一个listBox中的项目时,复制按钮被启用,并且删除按钮被禁用。当我为第二个listBox选择一个项目时,复制按钮被禁用,并且删除按钮被启用。

当你在其中一个listBox中选择一个项目时,按钮会没有问题地改变,在listBox失去焦点并且你选择了相同的项目时,按钮不会改变回来。

我理解问题是所选项目的更改事件不会触发,因为所选项目没有改变。

当listBox失去焦点时将所选项目设置为null无效,因为我需要选择的项目。 我需要找到一种方法来在列表框获得焦点时重新选择所选项目,或者只是触发所选项目的偶数更改。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试ListBox.LostFocus事件并将SelectedItem属性设置为null。

private void ListBox_LostFocus(object sender, RoutedEventArgs e)
{
    ((ListBox)sender).SelectedItem = null;
}

使用ListBox.GotFocus事件检查是否存在SelectedItem,存储索引,删除SelectedItem并使用存储的索引重置SelectedItem。像这样的东西

private void ListBox_GotFocus(object sender, RoutedEventArgs e)
{
    ListBox lb = (ListBox)sender;
    if(lb.SelectedItem != null )
    {
        int index = lb.SelectedIndex;
        lb.SelectedItem = null;
        lb.SelectedIndex = index;
    }
}