Reputation: 2487
I am a novice to WPF. I started learning about RoutedEvents in WPF. I tried a sample and i met up with a problem
<Grid Margin="5" Name="Grid" MouseDown="Window_MouseUp">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Label BorderBrush="Black" BorderThickness="1" Grid.Row="0" Margin="5" Name="FancyLabel" MouseDown="Window_MouseUp" >
<StackPanel Name="Stack" MouseDown="Window_MouseUp">
<TextBlock Margin="3" Name="txtBlock1">
Click Any Where
</TextBlock>
<TextBlock Margin="50" Name="txtBlock2" >
Click me also
</TextBlock>
</StackPanel>
</Label>
<ListBox Grid.Row="1" Margin="5" Name="ListMessages"/>
<Button Grid.Row="3" Margin="5" Name="cmd_Clear" MouseDown="Cmd_Clear_MouseDown" >Clear</Button>
</Grid>
The handler for the mouseDown event of the button is different from others int the tree hierarchy. The event is not firing..
But if i add in the .cs file the following code
Grid.AddHandler(UIElement.MouseDownEvent, new MouseButtonEventHandler(Window_MouseUp),true);
Stack.AddHandler(UIElement.MouseDownEvent, new MouseButtonEventHandler(Window_MouseUp), true);
FancyLabel.AddHandler(UIElement.MouseDownEvent, new MouseButtonEventHandler(Window_MouseUp), true);
txtBlock1.AddHandler(UIElement.MouseDownEvent, new MouseButtonEventHandler(Window_MouseUp), true);
txtBlock2.AddHandler(UIElement.MouseDownEvent, new MouseButtonEventHandler(Window_MouseUp), true);
Img1.AddHandler(UIElement.MouseDownEvent, new MouseButtonEventHandler(Window_MouseUp), true);
cmd_Clear.AddHandler(UIElement.MouseDownEvent, new MouseButtonEventHandler(Cmd_Clear_MouseDown), true);
the Cmd_Clear_MouseDown event is fired and the event is bubbled up to the grid and the grid fires Window_MouseUp.
Upvotes: 1
Views: 3222
Reputation: 30840
Two points:
1) Is MouseDown="Window_MouseUp"
everywhere intended?
2) Why not register to Click
event with ClickMode="Press"
instead of MouseDown
. I don't think Button
provides/raises MouseDown
unless may be with a custom template.
<Button Grid.Row="3"
Margin="5"
Name="cmd_Clear"
ClickMode="Press"
Click="Cmd_Clear_MouseDown">Clear</Button>
Upvotes: 1