C# WPF列表框选择不起作用

C# WPF列表框选择不起作用,c#,wpf,listbox,selectionchanged,C#,Wpf,Listbox,Selectionchanged,我有一些项目的列表框,我需要能够单击它们。问题是,当我点击项目的文本时,只有当我点击空白部分时, SelectionChanged 事件不会被激发。我是WPF的新手,我不明白为什么会发生这种情况 XAML: 我通过lboxdictions.ItemsSource属性绑定代码中的对象列表,它们就会显示出来。当然,每个对象都有一个名称属性 我已经尝试在列表框和项目上设置IsEnabled,包括代码和XAML,但没有帮助 也欢迎对WPF中更好的方法提出任何意见。在列表框中设置IsSynchronize

我有一些项目的列表框,我需要能够单击它们。问题是,当我点击项目的文本时,只有当我点击空白部分时,<代码> SelectionChanged 事件不会被激发。我是WPF的新手,我不明白为什么会发生这种情况

XAML:

我通过
lboxdictions.ItemsSource
属性绑定代码中的对象列表,它们就会显示出来。当然,每个对象都有一个
名称
属性

我已经尝试在列表框和项目上设置IsEnabled,包括代码和XAML,但没有帮助


也欢迎对WPF中更好的方法提出任何意见。

在列表框中设置
IsSynchronizedWithCurrentItem=“true”

您可以找到一个起点来获取有关此属性的更多详细信息


将此属性设置为true将使选择与保存实际选定项目的当前项目同步。当您单击空白区域时,当前项可能更改为NULL,并获得事件处理程序调用。

< P>如果您只想显示名称属性,可以定义这样的列表框:

<ListBox Name="lBoxVouchers" BorderThickness="0" FontSize="15" SelectionChanged="lBoxVouchers_SelectionChanged" DisplayMemberPath="Name" />
private void lBoxVouchers_SelectionChanged(object sender, SelectionChangedEventArgs e) {
    if (((ListBox)sender).SelectedItem != null)
        MessageBox.Show("You just selected " + (ListBox)sender).SelectedItem);
}

可能是列表框项目中的内容未拉伸。只需为listbox项编写此样式,然后重试

<Style TargetType="{x:Type ListBoxItem}">
  <Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>


他已经说过他成功地进行了数据绑定并显示了项目。你没有回答这个问题,只是展示了一种实现相同目标的不同方式。这很好,因为我说过,如果您对我的代码有任何有用的评论,我将不胜感激。使用DisplayMemberPath属性修复了它。我想Ed之前的代码不起作用,因为他重新定义了listBox数据模板,可能覆盖了一些事件。我只是告诉他我通常如何解决这类问题这里解释了一个更好的方法,
<ListBox Name="lBoxVouchers" BorderThickness="0" FontSize="15" SelectionChanged="lBoxVouchers_SelectionChanged" DisplayMemberPath="Name" ItemsSource={Binding Path=Items}" />
ObservableCollection<object> Items {get; set}
private void lBoxVouchers_SelectionChanged(object sender, SelectionChangedEventArgs e) {
    if (((ListBox)sender).SelectedItem != null)
        MessageBox.Show("You just selected " + (ListBox)sender).SelectedItem);
}
<Style TargetType="{x:Type ListBoxItem}">
  <Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>