【发布时间】:2016-07-07 08:30:43
【问题描述】:
当我单击 ListBox 中的项目时,它总是返回 null。当然,我的 ListBox 已经填满了 :-)
我的 XAML 代码:
<Window x:Class="WpfTimeClock.AdminWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfTimeClock"
mc:Ignorable="d"
ResizeMode="CanMinimize"
Title="AdminWindow" Height="527" Width="750">
<Grid>
<ListBox x:Name="listBoxUsers" HorizontalAlignment="Left" Height="250" VerticalAlignment="Top" Width="200" Margin="10,10,0,0"/>
</Grid>
</Window>
我的 C#-代码:
TimeClockRepository<User> repUser = new TimeClockRepository<User>();
public AdminWindow()
{
InitializeComponent();
Loaded += AdminWindow_Loaded;
listBoxUsers.PreviewMouseLeftButtonDown += ListBoxUsers_PreviewMouseLeftButtonDown;
}
private void ListBoxUsers_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var item = sender as ListBoxItem;
if (item != null && item.IsSelected)
{
// why is sender always null??
}
}
private void AdminWindow_Loaded(object sender, RoutedEventArgs e)
{
listBoxUsers.ItemsSource = repUser.Get().ToList();
listBoxUsers.DisplayMemberPath = "UserName";
}
当我点击它时,我的 sender 项目始终为空。问题是什么?感谢您的帮助!
【问题讨论】:
-
sender不为空。它是一个列表框。item为 null,因为您无法将 ListBox 转换为 ListBoxItem。 -
扩展@ASh 的评论:
as关键字将在可以转换时进行转换,并在无法执行转换时返回null。 -
如果您想将列表框项作为发件人,请使用
listBoxUsers.SelectionChanged += ListBoxUsers_SelectionChanged;。