【问题标题】:On SelectionChanged event (ListBox: SelectionMode=Multiple), the FIRST selected item is always returned not the CURRENT在 SelectionChanged 事件 (ListBox: SelectionMode=Multiple) 上,始终返回第一个选定项目而不是当前
【发布时间】:2011-12-22 15:37:20
【问题描述】:

My ListBox.SelectedValue 返回第一个选定项,而不是当前选定项。 (当前选中的项目意味着除了选中的ITEMS之外,我还显示了最后一个选中的项目)

这次我的 SelectionMode 是 Multiple 而不是 Single。

private void ListBoxSource_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        var fileSelected = (FileFound)this.ListBoxSource.SelectedValue; 
        BitmapImage bmpImage = new BitmapImage();
        bmpImage.BeginInit();
        bmpImage.UriSource = new Uri(fileSelected.FileFullName, UriKind.Absolute);
        bmpImage.EndInit();

        Image1.Source = bmpImage;

     }

现在,我没有在事件中执行此操作,而是尝试将我的 Image 控件绑定到 ListBoxSource 但是没有显示任何内容。

 Source="{Binding ElementName=ListBoxSource, Path=SelectedItems

有机会绑定吗?或者我的 SelectionChangedEvent 代码有什么问题?

【问题讨论】:

  • 我理解对了吗,您已经选择了多个项目,然后您又选择了一个项目,并且您想获得对最后一个选定项目的引用?
  • @StaWho 正是...因为我已经有其他列表框显示所有选定的项目。我只想显示最后选择的项目。

标签: c# .net wpf silverlight


【解决方案1】:

要获取最后选择的项目,您需要 SelectedItems 属性的最后一个索引。

var lb = (sender as ListBox);
lb.SelectedItems[lb.SelectedItems.Count - 1];

编辑

要将最后选择的项目作为 FileFound 对象,我认为你想要这个:

var lb = (sender as ListBox);
FileFound lastSelectedFile = 
                 (FileFound)lb.SelectedItems[lb.SelectedItems.Count - 1];

【讨论】:

  • 在性能方面会比从AddedItems 获取参考更快吗?
  • @StaWho - 嗯 - 要么应该工作 - 我怀疑无论哪种方式性能都会很重要。我相应地 +1 了你的答案
  • @AdamRackis 我知道我的问题有点令人困惑但是这个link 正是我想要完成的。只是,代码已经很旧了。甚至 VS 也不识别很多属性..
  • @user1078782 - 我和 StaWho 的回答不能做到这一点吗?
  • @AdamRackis 都对我不起作用。因为我将使用 selectedItem/selectedValue 作为我的图像控件的来源。我正在检索绑定到我的 listBox 的“FileFound”类的“FileFullName”属性(参见上面的实现)。
【解决方案2】:

查看e.AddedItems 和e.RemovedItems。如果您有多选,不确定currently selected item 是什么意思?

[编辑]

如果您想要最后选择的项目,它将是

var lastItem = e.AddedItems[e.AddedItems.Count - 1];

【讨论】:

  • 我编辑它.. 请再读一遍第一段.. 意思是如果选择了 3 个项目,我想在图像控件中显示第 3 个项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2010-12-05
  • 1970-01-01
相关资源
最近更新 更多