由於某種原因,子項Expander
(置於另一個Expander
內部的StackPanel
中)在摺疊或展開時會導致父級擴展器提高其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");
}
當你運行這個,如果你展開父,你會得到一個「擴大「messagebox,如你所期望的那樣。但是當你展開其中一個孩子時,你會再次看到消息框。
的documentation爲擴大事件說:
當從假IsExpanded屬性更改爲true
但顯然IsExpanded屬性未在父擴展變化發生的事件展開。
爲什麼會發生這種情況,有什麼想法?
啊確定。我沒有意識到這種類型的事件會以這種方式獲得路由。對於鼠標/鍵盤的相互作用,當它實際上影響到父母時也是有意義的......但是擴展似乎是一種奇怪的選擇。感謝您的迴應,H.B. – Tim 2011-05-18 15:05:24
事實上,我曾經以編程方式創建了一個由擴展器組成的樹,並且由於這個原因,孩子們不會像預期的那樣擴展。 – 2011-05-18 15:06:32
哈哈。我相信這很令人沮喪(就像這樣)。恭喜10k。我正努力在那裏工作! – Tim 2011-05-18 15:07:29