У меня проблема с получением исходного источника команды с помощью ExecutedRoutedEventArgs.
Я создаю простую разделенную кнопку, в которой под выделенной кнопкой появится меню при нажатии другой кнопки. Когда я щелкаю пункт меню в появившемся меню, запускается команда. Эта команда зарегистрирована на кнопке split. И идея состоит в том, чтобы получить доступ к пункту меню с помощью ExecutedRoutedEventsArgs.
Хорошо, теперь проблема. Если я выберу отображение всплывающего меню по умолчанию (IsOpen = "True") и щелкну один из элементов меню, я смогу получить доступ к источнику originals (таким образом, элементу меню) из ExecutedRoutedEventArgs - нет проблем. Однако, если я сначала нажму кнопку, чтобы отобразить меню, а затем щелкну по элементу меню, исходным источником команды будет кнопка вместо MenuItem!
Вот шаблон управления для кнопки split:
<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>
Кнопка OK запускает ShowMenuCommand на SplitButton, которая устанавливает свойство IsOpen в всплывающем окне в True.
Есть идеи, почему кнопка OK (после активации меню) является источником оригинала при нажатии на пункт меню?
Спасибо.