有没有办法在WPF中使用别名命令?

有没有办法在WPF中有效地“别名”命令?我的情况是这样的:我创建了一个应用程序,它在具有许多自定义画布的图形编辑器的上下文中使用ApplicationCommands.Delete。这些画布上的一些控件使用TextBoxes,但问题是:TextBox不响应ApplicationCommands.Delete,它响应EditorCommands.Delete。有没有办法干净地让TextBox响应ApplicationCommands.Delete而无需子类化或手动设置每个TextBox实例上的绑定?     
已邀请:
为了回答您的具体问题,我知道无法将两个单独的路由命令视为同一个命令。但是因为
ApplicationCommands.Delete
是一个路由命令,在它被传递到它的目标后,
TextBox
并且没有命令绑定,它将开始冒泡。因此,满足您要求的最简单的解决方案是在
TextBox
之间的某处安装命令绑定,并且可能包括实现您所需行为的
Window
。 这是一个在父
Grid
上安装处理程序的示例,该处理程序将“右”命令发送到聚焦元素,在这种情况下将是
TextBox
<Grid>
    <Grid.CommandBindings>
        <CommandBinding Command="ApplicationCommands.Delete" CanExecute="CommandBinding_CanExecute" Executed="CommandBinding_Executed"/>
    </Grid.CommandBindings>
    <DockPanel>
        <Menu DockPanel.Dock="Top">
            <MenuItem Header="_Edit">
                <MenuItem Header="_Delete" Command="ApplicationCommands.Delete"/>
            </MenuItem>
        </Menu>
        <StackPanel>
            <TextBox Text="Some text"/>
        </StackPanel>
    </DockPanel>
</Grid>
这是代码隐藏的代码:
private void CommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
    e.CanExecute = true;
}

private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
    EditingCommands.Delete.Execute(null, Keyboard.FocusedElement);
}
    

要回复问题请先登录注册