我正在使用Ribbons控件库从微软的WPF提供一个功能区在我们的WPF应用程序。
我们在XAML部件中以以下方式使用Splitbuttons:
<r:RibbonSplitButton Label="SplitButtonLabel" LargeImageSource="..." Command="{Binding SplitButtonCommand}">
<r:RibbonSplitMenuItem Header="Item 1" ImageSource="..." Command="{Binding Command1}"/>
<r:RibbonSplitMenuItem Header="Item 2" ImageSource="..." Command="{Binding Command2}"/>
<r:RibbonSplitMenuItem Header="Item 3" ImageSource="..." Command="{Binding Command3}"/>
</r:RibbonSplitButton>
如果我点击拆分按钮的上半部分,命令SplitButtonCommand会像正常情况下一样执行一次。
如果我点击SplitButton的底部,然后点击任何Menü项目(例如第1项)本项的命令执行两次。
有没有人知道问题的原因?
5条答案
按热度按时间cnh2zyt31#
看起来它可能是通过设计来看看这篇文章。有一个解决方案提到:
虽然这是RibbonControl的本质,但您可以尝试通过解析ExecutedRoutedEventArgs并检查OriginalSource是否与Source相同来解决此问题,如果是,则执行此命令。
RibbonMenuItem triggers command twice
ndasle7k2#
另一种解决方法是,您可以使用click事件:
在click事件处理程序中,将Handled属性设置为true:
plicqrtu3#
正如dellywheel所说,这种行为似乎是设计出来的。
我处理了这个问题,改变了我的代码,就像下面的例子。
我通过使用RibbonButtons和提供的SmallImageSource替换了RibbonSplitMenuItem的用法
piok6c0g4#
由于这是一个设计错误:),将
Template
属性转换为新资源,并从PART_HeaderButton
的COMMAND
,COMMANDPARAMETER
和COMMANDTARGET
中删除TemplateBindings
(即完全删除这3个属性),因为它们是导致重复调用命令的“特性”的来源。如果您愿意,可以将此
ControlTemplate
应用于所有按钮。zd287kbt5#
我使用
RibbonMenuItem
而不是RibbonSplitMenuItem
修复了它。