【问题标题】:WPF Undo/Redo buttons turn greyWPF 撤消/重做按钮变为灰色
【发布时间】:2021-04-12 08:34:17
【问题描述】:

我正在使用 WPF 开发一个 UI,我想在应用程序操作中添加撤消/重做按钮。例如,如果我在 TextBox1 中输入一个值,而不是另一个值,则通过按下 undo 它会返回到 textbox1 中的第一个值。

我尝试将 Command="ApplicationCommands.Undo" 添加到按钮,但它变成灰色并且在 UI 上不再可点击:

<Button x:Name="undoBtn"
             BorderBrush="#FFABADB3"
             Background="{x:Null}"
             Padding="5,0,5,0"
             HorizontalAlignment="Left"
             Width="100"
             Height="25"
             VerticalAlignment="Top"
             Margin="15,130,0,0"
             Click='undoBtn_Click'
             Command="ApplicationCommands.Undo"
             >

我做错了什么? 非常感谢。

【问题讨论】:

    标签: wpf user-interface undo-redo


    【解决方案1】:

    根据ApplicationCommands 类的文档:

    ApplicationCommands 类 [...] 中的命令仅表示 RoutedCommand 的实例,而不是命令的实现逻辑。实现逻辑通过 CommandBinding 绑定到命令。

    [...然而,m]任何控件都为命令库中的许多命令提供了实现逻辑。例如,TextBox 类为粘贴、剪切、复制、撤消和重做命令提供逻辑。

    要利用 TextBox 类提供的撤消/重做命令的实现,请将命令的目标设置为 TextBox 元素。

    <TextBox Name="TextBox1"/>
    <Button Content="Undo" 
            Command="ApplicationCommands.Undo" 
            CommandTarget={Binding ElementName=TextBox1}"/>
    

    为了回答您的问题,未启用按钮,因为您的 CommandBinding 的 CanExecuteRoutedEventHandler 的 CanExecuteRoutedEventArgs 的 CanExecute 属性未设置为 true,因为您的命令没有目标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-22
      相关资源
      最近更新 更多