我有一個問題,使用ExecutedRoutedEventArgs獲取命令的原始源代碼。WPF:無法從ExecutedRoutedEventArgs獲取原始源代碼
我正在創建一個簡單的分割按鈕,其中一個菜單將顯示在專用按鈕下方,另一個按鈕被按下。當我在出現的菜單中點擊一個菜單項時,一個命令被觸發。該命令在分割按鈕上註冊。這個想法是通過使用ExecutedRoutedEventsArgs來點擊菜單項。
好吧,現在的問題。如果我選擇默認顯示彈出式菜單(IsOpen =「True」),然後單擊其中一個菜單項,我可以從ExecutedRoutedEventArgs中獲得原始資源(因此菜單項) - 沒問題。但是,如果我第一次點擊按鈕來顯示菜單,然後單擊一個菜單項,命令的原始資源將成爲按鈕而不是MenuItem!
下面是該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>
OK按鈕觸發的SplitButton,這在彈出的IsOpen屬性設置爲true的ShowMenuCommand。
任何想法爲什麼OK按鈕(在激活菜單後)是單擊菜單項時單擊的OriginalSource?
謝謝。
你有沒有使用'ContextMenu',而不是'Menu'一個'Popup'內部的原因是什麼? – wpfwannabe 2010-04-28 09:54:05