По какой-то причине дочерние Expander
s (помещенные в StackPanel
внутри другого Expander
), когда они свернуты или развернуты, заставляют родительский Expander вызывать свои события Expanded
или Collapsed
.
Кто-нибудь знает, почему это или как я могу это изменить? Меня интересуют только события родителей.
Вот несколько тестов XAML:
<Expander Header="Outer" Expanded="Expander_Expanded" Collapsed="Expander_Collapsed">
<StackPanel>
<Expander Header="Inner1">
<Canvas Height="100" Width="100" Background="Blue" />
</Expander>
<Expander Header="Inner2">
<Canvas Height="100" Width="100" Background="Red" />
</Expander>
</StackPanel>
</Expander>
и вот код:
private void Expander_Expanded(object sender, RoutedEventArgs e)
{
MessageBox.Show("expanded");
}
private void Expander_Collapsed(object sender, RoutedEventArgs e)
{
MessageBox.Show("collapsed");
}
Когда вы запускаете это, если вы расширяете родителя, вы получаете «расширенное» окно сообщения, как и следовало ожидать. Но когда вы расширяете одно из дочерних элементов, вы снова получаете окно сообщения.
Документация для расширенного события гласит:
Событие Expanded наступает, когда свойство IsExpanded изменяется с false на true
Но очевидно, что свойство IsExpanded не изменяется в родительском Expander.
Почему это происходит, есть идеи?