嗨 我learnign WPF和目前我正在閱讀有關RoutedEvents。在本書「臨WPF在C#中」有一些代碼snipet我呈給下面WPF - 瞭解路由事件
<Window x:Class="RoutedEventsLearning.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300" MouseUp="SomethingClicked" >
<Grid Margin="3" MouseUp="SomethingClicked">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Label Margin="5" Grid.Row="0" HorizontalAlignment="Left"
Background="AliceBlue" BorderBrush="Black" BorderThickness="1"
MouseUp="SomethingClicked">
<StackPanel MouseUp="SomethingClicked">
<TextBlock Margin="3"
MouseUp="SomethingClicked">
Image and text label</TextBlock>
<Image Stretch="None"
MouseUp="SomethingClicked" />
<TextBlock Margin="3"
MouseUp="SomethingClicked">
Courtesy of the StackPanel</TextBlock>
</StackPanel>
</Label>
<ListBox Grid.Row="1" Margin="5" Name="lstMessages"></ListBox>
<CheckBox Grid.Row="2" Margin="5" Name="chkHandle">
Handle first event</CheckBox>
</Grid>
</Window>
的一點是,我看到的路由事件的無差異/優勢(通過這個例子judgin)。 在常規的C#中,我會做同樣的事情 - 爲表單上的每個元素添加處理程序(就像在這裏完成的那樣)。
起初,當我閱讀關於路由事件時,它似乎是這樣工作的。我爲窗體/控件/窗口上的所有可視元素的父級添加事件處理程序。如果我點擊孩子,mousedown事件就會上升並通過視覺樹向下傳播。如果事件到達網格,則調用事件處理程序。 但是我錯了,或者我做錯了。有人可以解釋我正常事件和路由事件之間的區別
編輯 插入代碼時發生了一些奇怪的事情。全部代碼snipet insted我得到只有標籤
澄清:RoutingStrategy的默認值僅影響您定義的新RoutedEvents。在現有控件上定義的事件都定義了一個特定的值,在很多情況下,Bubble爲普通事件,Tunnel爲關聯預覽事件。 – 2010-09-25 21:28:33