我有一个ListBox及其DataContext。当我选择一个项目时,我无法再选择相同的项目。当有很多对象时,这不是问题,但有时候,一个后期服务会返回一个只包含一个元素的列表,如果用户选择该元素,并且他希望再次选择它,他将无法做到这一点。任何人都知道如何解决这个问题选择一个项目两次或更多次
无论如何,谢谢!
我有一个ListBox及其DataContext。当我选择一个项目时,我无法再选择相同的项目。当有很多对象时,这不是问题,但有时候,一个后期服务会返回一个只包含一个元素的列表,如果用户选择该元素,并且他希望再次选择它,他将无法做到这一点。任何人都知道如何解决这个问题选择一个项目两次或更多次
无论如何,谢谢!
正如蒂埃里问,为什么你想让用户再次选择相同的物品?
如果只是这一个边缘情况下,你有一个项目,填满列表框,然后我会问,单个项目(或第一个项目与多个返回)默认选择?如果是,请尝试在列表框上将IsSynchronizedWithCurrentItem属性设置为False。没有看到代码,很难提供更好的答案。
如果每次用户选择一个项目时都会运行代码,则无论它是否相同,您都可能遇到工作流问题。您可能想要查看是否可以重构此区域中的代码以更改工作流程。
如果您无法通过选择项目来更改工作流程,即使它是同一项目,也可能需要将按钮的控件模板更改为Textblock中的每个项目。这将允许您绑定到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;
}
试试这个,它为我工作.. :)
public void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
ListBox listBox = sender as ListBox;
if (listBox != null && listBox.SelectedItem != null)
{
// do work
}
listBox.SelectedIndex = -1;
}
在WP7
谢谢!它也适用于我 –
太好了。请在您认为合适的时候加注/接受答案。 –
,使用列表框导航链接的列表是范式 - 而不是一个工作流程问题。 –