我有一个主窗口,主要由一个fluidribbon控件作为菜单和状态栏组成。 它还有一个内容控件,我加载视图(usercontrols)。
我使用RoutedUICommand从我的功能区按钮执行按钮事件。根据功能区按钮操作,我希望它们在主窗口或加载的视图(usercontrol)中执行。
我的问题是,当我将我的ribbonbutton绑定到在加载的usercontrol中执行的命令时,它接缝就像我的命令目标绑定无关紧要我总是将usercontrol作为发送者和源我的ExecutedRoutedEventArgs。
在这种特殊情况下,我需要获得实际的Fluent.Button,这样我就可以修改按钮上的文本和图标,因为它是一种切换按钮,所以我想从打开文本 - >关闭 - >打开,与相关的图标相同。
在创建我的usercontrol时,我绑定了命令:
this.CommandBindings.Add(new CommandBinding(CommandLibrary.InvoiceControl_PreviewToggle, OnPreviewToggle_Command));
然后我有我的活动:
private void OnPreviewToggle_Command(object sender, ExecutedRoutedEventArgs e)
{
var button = e.Source as Fluent.Button;
}
然后在我的主窗口中我得到了我的RibbonButton:
<Fluent:Button x:Name="PreviewToggle_Button" Header="Open" Icon="/levscan.wpf.resources;component/Icons/appbar.layer.perspective.up.png" LargeIcon="/levscan.wpf.resources;component/Icons/appbar.layer.perspective.up.png" Command="cmd:CommandLibrary.InvoiceControl_PreviewToggle" CommandTarget="{Binding ElementName=PreviewToggle_Button}" CanAddToQuickAccessToolBar="False"/>
我总是得到发件人和e.Source =我的usercontrol和e.OriginalSource接缝成为我的usercontrol中当前关注的元素。
修改
找到解决目标问题的解决方法,我可以将按钮作为CommandParameter传递,但是我不认为它是一个解决方案,如果我需要传递一个实际参数,我还需要一个实际工作的目标