使用ctrl + z键在WPF中实现我们自己的Undo方法/功能并禁用默认的undo命令

时间:2018-05-14 22:44:47

标签: c# wpf mvvm

如何使用ctrl + z(ApplicationCommand.Undo)键来实现我们自己的undo方法,而不是使用WPF中的default命令。基本上用我们自己的撤销方法替换默认命令。

例如:我想将ctrl + z命令绑定到我的方法:               private void OnMenuItemUndo(object sender,RoutedEventArgs e) in              xaml.cs文件。

1 个答案:

答案 0 :(得分:1)

下面是一个简单的方法。它假定一个公开名为ICommand的{​​{1}}类型属性的数据源对象已绑定到YourUndoCmd的祖先TextBox属性之一

DataContext

更新

<TextBox IsUndoEnabled="false"> <TextBox.InputBindings> <KeyBinding Modifiers="Ctrl" Key="Z" Command="{Binding YourUndoCmd}"/> </TextBox.InputBindings> </TextBox> 方式。

CommandBinding

在您的代码隐藏中,应该有一个类似下面的方法来处理撤消命令。

<Grid>
    <Grid.CommandBindings>
        <CommandBinding Executed="Undo_ExeCuted" Command="ApplicationCommands.Undo"/>
    </Grid.CommandBindings>

    <!--TextBox that will use your undo logic.-->
    <TextBox IsUndoEnabled="False"/>

    <!--TextBox that will use build-in undo logic.-->
    <TextBox />
</Grid>