选择一个项目两次或两次以上



我有一个带有DataContext的Listbox。当我选择一个项目时,我不能再选择相同的项目。当有很多对象时,这不是一个问题,但有时,邮政服务会给我返回一个只有一个元素的列表,如果用户选择了元素,他想再次选择,他将无法做到。任何人都知道如何解决这个问题

不管怎样,谢谢!

试试这个,它对我有效..:)

  public void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
  {
        ListBox listBox = sender as ListBox;
        if (listBox != null && listBox.SelectedItem != null)
        {
            // do work
        }
        listBox.SelectedIndex = -1;
  }

正如Thierry所问,您为什么希望用户再次选择相同的项目?

如果只是这种单边情况,你有一个项目填满了列表框,那么我会问,默认情况下是选择了单个项目(还是第一个返回多个项目)?如果是,请尝试在列表框上将IsSynchronizedWithCurrentItem属性设置为False。如果看不到代码,就很难提供更好的答案。

如果每次用户选择一个项目时都有代码运行,那么无论它是否是同一个项目,都可能存在工作流问题。您可能想看看是否可以重构此区域中的代码以更改工作流。

如果您无法通过选择一个项目来更改工作流,即使它是同一个项目,您可能需要将列表框中的每个项目设置为按钮,并将按钮的控制模板更改为文本块的控制模板。这将允许您绑定到Command属性,并明确知道用户单击了哪个项目。

如果您使用ListBox来执行类似导航的操作,那么您希望用户能够在一行中多次选择一个项目是有道理的。以下是您的操作方法:

"问题"只是ListBox通知您的更改,而选择同一项并不是更改

public void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
   var lb = (ListBox)sender;
   if (lb.SelectedIndex == -1) return;
  //your selection logic here
   lb.SelectedIndex = -1;
}

最新更新