在SelectionChanged事件(ListBox:SelectionMode = Multiple)上,始终返回FIRST所选项而不是CURRENT

时间:2011-12-22 15:37:21

标签: c# .net wpf silverlight

我的ListBox.SelectedValue返回第一个选定的项目,而不是当前选定的项目。 (当前选择的项目表示除了选定的项目,我还显示最后一项已选中)

我的SelectionMode这次是多次而不是单次。

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代码有什么问题?

2 个答案:

答案 0 :(得分:3)

查看e.AddedItemse.RemovedItems。如果你有多选的话,不确定currently selected item是什么意思?

[编辑]

如果您想要最后选择的项目,那么

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

答案 1 :(得分:2)

要获取最后选择的项目,您需要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];