Wpf 从列表框XAML中选择的项目

Wpf 从列表框XAML中选择的项目,wpf,xaml,data-binding,listbox,Wpf,Xaml,Data Binding,Listbox,我试图使用ListBox_SelectionChanged方法从ListBox获取所选项目,但它似乎不起作用。您能告诉我从列表框中取出所选项目的最佳方法是什么吗。我试过的代码如下 非常感谢你的帮助 XAML 首先检查列表框的DataConntext或ItemsSource是什么,它必须是一个可观察的集合,以避免内存泄漏。 检查输出窗口中是否存在绑定错误。 检查是否有要绑定的correcct属性。 请尝试下一个解决方案: 据我所知,问题是添加的事件项参数不包含当前选定的项。但是你的代码没有任何问题

我试图使用ListBox_SelectionChanged方法从ListBox获取所选项目,但它似乎不起作用。您能告诉我从列表框中取出所选项目的最佳方法是什么吗。我试过的代码如下

非常感谢你的帮助

XAML

首先检查列表框的DataConntext或ItemsSource是什么,它必须是一个可观察的集合,以避免内存泄漏。 检查输出窗口中是否存在绑定错误。 检查是否有要绑定的correcct属性。 请尝试下一个解决方案: 据我所知,问题是添加的事件项参数不包含当前选定的项。但是你的代码没有任何问题。它返回我使用它时的实际模型技能。但是如果你在上面应用字符串metod,你就不会得到真正的模型,结果只会是一个类的全名。。如果要获取模型实例,必须强制或安全地强制转换e.AddedItems内容,或者必须重写模型类中的ToString方法。另一方面,如果出于某种原因希望获取ListBoxItem本身,请尝试使用下一个代码:

 var listBox = sender as ListBox;
    var selected = e.AddedItems.Cast<object>().FirstOrDefault();
    var container = listBox.ItemContainerGenerator.ContainerFromItem(selected);

关于

我尝试了您的代码,当列表中的某个项目被选中时,evend将被正确触发,该项目位于lbSkills.SelectedItem和e.AddedItems[0]lbSkills.SelectedItem中,正确显示所选项目。尝试删除async/await并检查。嗨,ANjum,我尝试删除async/await,但仍然一样。我只是得到了路径,但没有选择的项目。只是提到我在Windows 8.1中尝试了这一点,而不是在手机上。嗨,我是Golik,我尝试了用户,但结果相同。我正在尝试这是Windows8.1而不是WindowsPhone。你认为这就是我没有得到正确答案的原因吗result@Rao我不这么认为。我在W8.1中尝试过这个,并且成功了。你能更具体地说明你的结果吗。你得到了什么?addedItems[0]的结果是否为空?selectedSkill.ToString的结果是否为空?
 private async void LbSkills_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        //var addedItems = e.AddedItems;
        //string selectedSkillString = "None";
        //if (addedItems.Count > 0)
        //{
        //   var selectedSkill = addedItems[0];
        //    selectedSkillString = selectedSkill.ToString();
        //}

        //lbSkills.SelectedItem.ToString();

        MessageDialog msgBox = new MessageDialog(e.AddedItems.ToString());
        await msgBox.ShowAsync();
    }
 var listBox = sender as ListBox;
    var selected = e.AddedItems.Cast<object>().FirstOrDefault();
    var container = listBox.ItemContainerGenerator.ContainerFromItem(selected);