WPF: Can't get to original source from ExecutedRoutedEventArgs

Posted by Ikhail on Stack Overflow See other posts from Stack Overflow or by Ikhail
Published on 2010-04-28T04:00:28Z Indexed on 2010/04/28 4:03 UTC
Read the original article Hit count: 149

Filed under:
|
|

I have a problem getting to the original source of a command using ExecutedRoutedEventArgs.

I'm creating a simple splitbutton, in which a menu will appear below a dedicated button, as another button is pressed. When I click a menuitem in the appearing menu a command is fired. This command is registered on the splitbutton. And the idea is to get to the menuitem beeing clicked, by using the ExecutedRoutedEventsArgs.

Ok, now the problem. If I choose to have the popup menu shown by default (IsOpen="True") and I click one of the menuitems I can get to the originalsource (thus the menuitem) from the ExecutedRoutedEventArgs - no problem. However, if I first click the button to show the menu and THEN click on a menuitem, the originalsource of the command will be the button instead of the MenuItem!

Here's the controltemplate for the splitbutton:

<ControlTemplate TargetType="{x:Type usc:SplitButton}">
  <StackPanel Orientation="Horizontal">
    <Button Name="mybutton">
      <StackPanel>
        <Popup usc:SplitButton.IsPopup="True" IsOpen="True" Name="myPopup" PlacementTarget="{Binding ElementName=mybutton}" StaysOpen="False" Placement="Bottom">
        <Border BorderBrush="Beige" BorderThickness="1">
          <Menu Width="120">
            <MenuItem Header="item1" Command="usc:SplitButton.MenuItemClickCommand" />
            <MenuItem Header="item2" />
            <MenuItem Header="item3" />
           </Menu>
         </Border>
         </Popup>
         <TextBlock Text="MySplitbutton" />
        </StackPanel>
          </Button> 
      <Button Content="OK" Command="usc:SplitButton.ShowMenuCommand" />
   </StackPanel>
</ControlTemplate>

The OK button fires a ShowMenuCommand on the SplitButton, which sets the IsOpen property on the Popup to True.

Any ideas why the OK button (after having activated the menu) is the OriginalSource when a menuitem is clicked?

Thanks.

© Stack Overflow or respective owner

Related posts about wpf

Related posts about .NET