У меня есть ListBox
с ListBoxItem
, используя DataTemplate
, который использует Expander
в качестве своего контейнера. Проблема в том, что Expander
кажется, что есть Click
event (HeaderSite
часть Expander
, если быть точным), и я никогда не получаю SelectedItem
, если я нажимаю на Expander
(но он работает, если вы нажмите на ListBoxItem
).
Любая идея о том, как получить Expander
, чтобы играть красиво с помощью ListBox
?
Здесь упрощенный Xaml, который будет воспроизводить проблему (без необходимости кода):
Изменить обновленный код, чтобы приблизиться к моему фактическому шаблону, но скриншоты по-прежнему из предыдущей версии (проблема такая же - это просто для выяснения проблемы с первым ответом)
<Window x:Class="ListBoxSample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<StackPanel>
<TextBlock>
<Run Text="Selected Item" />
<Run Text="{Binding ElementName=ListBox, Path=SelectedItem}" />
</TextBlock>
<ListBox x:Name="ListBox">
<ListBoxItem>
<Expander Header="Expandable Stuff 1">
<ListBox>
<ListBoxItem>1.1</ListBoxItem>
<ListBoxItem>1.2</ListBoxItem>
</ListBox>
</Expander>
</ListBoxItem>
<ListBoxItem>
<Expander Header="Expandable Stuff 2">
<ListBox>
<ListBoxItem>2.1</ListBoxItem>
<ListBoxItem>2.2</ListBoxItem>
</ListBox>
</Expander>
</ListBoxItem>
</ListBox>
</StackPanel>
</Window>
Скриншоты предварительно редактируются
Нажав ListBoxItem
, в результате получим SelectedItem
:
Нажатие на Expander приводит к обновлению нет SelectedItem
(щелчок на Expander 1 был очевиден пунктиром):