首页 > 解决方案 > WPF ComboBoxItem DataTemplate 无法单击要选择的项目文本

问题描述

我正在填充 aComboBoxItemsSource显示一个简单的Binding

<ComboBox 
    ItemsSource="{Binding Locations}" 
    SelectedItem="{Binding Location}"
>
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <ComboBoxItem Content="{Binding Name}" />
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

我无法通过单击文本来选择新的组合框项目(我必须单击文本外部):

在此处输入图像描述

因此,如果我单击内边框(文本容器)内的深蓝色区域,它不会更新选择。如果我单击浅蓝色区域,它会按预期更新。为什么会这样?

标签: .netwpf

解决方案


ItemTemplate 中不应有 ComboBoxItem(因为它被用作另一个自动生成的 ComboBoxItem 的 ContentTemplate)。

改用 TextBlock:

<ComboBox.ItemTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding Name}"/>
    </DataTemplate>
</ComboBox.ItemTemplate>

或者只是删除整个 ItemTemplate 并设置 DisplayMemberPath:

<ComboBox 
    DisplayMemberPath="Name"
    ItemsSource="{Binding Locations}" 
    SelectedItem="{Binding Location}"/>

推荐阅读