2012-08-27 54 views
1

我有一个ListBox及其DataContext。当我选择一个项目时,我无法再选择相同的项目。当有很多对象时,这不是问题,但有时候,一个后期服务会返回一个只包含一个元素的列表,如果用户选择该元素,并且他希望再次选择它,他将无法做到这一点。任何人都知道如何解决这个问题选择一个项目两次或更多次

无论如何,谢谢!

回答

1

正如蒂埃里问,为什么你想让用户再次选择相同的物品?

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

如果每次用户选择一个项目时都会运行代码,则无论它是否相同,您都可能遇到工作流问题。您可能想要查看是否可以重构此区域中的代码以更改工作流程。

如果您无法通过选择项目来更改工作流程,即使它是同一项目,也可能需要将按钮的控件模板更改为Textblock中的每个项目。这将允许您绑定到Command属性并明确知道用户点击了哪个项目。

+0

,使用列表框导航链接的列表是范式 - 而不是一个工作流程问题。 –

1

如果您使用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; 
} 
2

试试这个,它为我工作.. :)

public void OnSelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     ListBox listBox = sender as ListBox; 

     if (listBox != null && listBox.SelectedItem != null) 
     { 
      // do work 
     } 

     listBox.SelectedIndex = -1; 
    } 
在WP7
+0

谢谢!它也适用于我 –

+0

太好了。请在您认为合适的时候加注/接受答案。 –