C# ListBox SelectedItem始终为空
当我单击列表框中的项目时,它总是返回null。当然,我的列表框已经满了:-)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
我的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.
}