C# ListBox SelectedItem始终为空

C# ListBox SelectedItem始终为空,c#,wpf,xaml,listbox,C#,Wpf,Xaml,Listbox,当我单击列表框中的项目时,它总是返回null。当然,我的列表框已经满了:-) 我的XAML代码: 我的C代码: TimeClockRepository repUser=new TimeClockRepository(); 公共管理窗口() { 初始化组件(); 加载+=AdminWindow\u加载; listBoxUsers.PreviewMouseLeftButtonDown+=listBoxUsers\u PreviewMouseLeftButtonDown; } private vo

当我单击列表框中的项目时,它总是返回null。当然,我的列表框已经满了:-)
我的XAML代码:


我的C代码:

TimeClockRepository repUser=new TimeClockRepository();
公共管理窗口()
{
初始化组件();
加载+=AdminWindow\u加载;
listBoxUsers.PreviewMouseLeftButtonDown+=listBoxUsers\u PreviewMouseLeftButtonDown;
}
private void ListBoxUsers\u PreviewMouseLeftButtonDown(对象发送器,鼠标按钮Ventargs e)
{
var item=发送方作为ListBoxItem;
if(item!=null&&item.IsSelected)
{
//为什么发件人总是空的??
}
}
已加载私有void AdminWindow_(对象发送方,路由目标)
{
listBoxUsers.ItemsSource=repUser.Get().ToList();
listBoxUsers.DisplayMemberPath=“用户名”;
}

当我点击我的
发送者
项目时,该项目始终为空。有什么问题?谢谢你的帮助

您应该处理
列表视图项
,而不是
列表框
。只需在
ListView.ItemContainerStyle
中为
ListViewItem
创建处理程序:

XAML:


您应该改用SelectionChanged事件

this.listBoxUsers.SelectionChanged += ListBoxUsers_SelectionChanged;

private void ListBoxUsers_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    // do your things with listBoxUsers.SelectedItem
    // If you want to click same item more than once, set SelectedIndex to -1 after use it.
}

发送方
不为空。这是一个列表框
item
为空,因为您无法将ListBox强制转换为ListBoxItem。要扩展@ASh的注释:
as
关键字将在可以强制转换时强制转换,并且在无法执行强制转换时返回
null
。使用
listBoxUsers.SelectionChanged+=listBoxUsers\u SelectionChanged如果您希望以发件人身份获取列表框项目。
private void ListViewItem_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    var item = sender as ListViewItem;
    if (item != null && item.IsSelected)
    {
        //Do your actions
    }
}
this.listBoxUsers.SelectionChanged += ListBoxUsers_SelectionChanged;

private void ListBoxUsers_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    // do your things with listBoxUsers.SelectedItem
    // If you want to click same item more than once, set SelectedIndex to -1 after use it.
}