【问题标题】:Select an item two or more times选择一个项目两次或多次
【发布时间】:2012-08-28 12:36:39
【问题描述】:

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

无论如何,谢谢!

【问题讨论】:

    标签: c# windows-phone-7 listbox datacontext 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;
      }
    

    【讨论】:

    • 太棒了。请在您认为合适的情况下投票/接受作为答案。
    【解决方案2】:

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

    如果只是这种极端情况,您有一个项目填充列表框,那么我会问,默认情况下是否选择了单个项目(或返回多个的第一个项目)?如果是这样,请尝试在列表框中将 IsSynchronizedWithCurrentItem 属性设置为 False。没有看到代码,很难提供更好的答案。

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

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

    【讨论】:

    • 在 WP7 中,使用 ListBox 作为导航链接的列表是范例 - 不是工作流问题。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      • 2012-03-05
      相关资源
      最近更新 更多