列表框高亮项

Listbox highlight item

我想知道为什么我可以 select 列表框中的项目而不是文本中的项目。所以我可以 select 白色的项目 space 但是当我点击文本或图像时它没有突出显示,我想知道为什么?

<Popup IsOpen="{Binding IsChecked, ElementName=toggleButtonAdd}" x:Name="Popup" StaysOpen="False" Placement="Right">
                <Border BorderBrush="Black" BorderThickness="1" Background="Gainsboro">
                    <StackPanel Margin="5,10,5,5">
                        <TextBlock Text="Add Existing Property:"></TextBlock>
                        <ListBox BorderBrush="Black" BorderThickness="1" Background="White" Margin="5" Padding="4" Width="130"
                                 ItemsSource="{Binding Path=AvailableProperties}" ><!--SelectionChanged="Selector_OnSelectionChanged">-->
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <ListBoxItem Margin="2">
                                        <StackPanel Orientation="Horizontal">
                                            <Image Source="{Binding Icon, Converter={StaticResource ImageToSourceConverter}}" Width="12" Height="12" Margin="3" VerticalAlignment="Center"/>
                                            <TextBlock Text="{Binding Name}" VerticalAlignment="Center"></TextBlock>
                                        </StackPanel>
                                    </ListBoxItem>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>
                    </StackPanel>
                </Border>
            </Popup>

首先,您不需要将ListBoxItem添加到DataTemplate

如果您从 DataTemplate 中删除 ListBoxItem,选择将按预期进行。 我真的在这里猜测,但我认为它与 ListBox 本身以及它找到其子项的方式有关。它肯定与 ListBoxItem 是一个 ContentControl 这一事实无关,因为将您的示例更改为 ContentControl 将解决一个问题