出于某种原因,子展开器(置于另一个Expander内的StackPanel中)在折叠或展开时会导致父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"); }
当您运行此操作时,如果展开父级,则会获得“扩展”消息框,正如您所期望的那样.但是当你然后展开其中一个孩子时,你会再次收到消息框.
扩展活动的documentation说:
The Expanded event occurs when the IsExpanded property changes from false to true
但显然IsExpanded属性在父Expander上没有变化.
为什么会发生这种情况,有什么想法吗?