【问题标题】:Binding Button IsEnabled to TextBox.CanUndo绑定按钮 IsEnabled 到 TextBox.CanUndo
【发布时间】:2014-05-26 00:55:04
【问题描述】:

我正在尝试将按钮绑定到文本框的 CanUndo 属性,但我无法让它工作。我尝试了直接绑定,例如

IsEnabled="{Binding CanUndo, ElementName=txtDocument}"

但这没有用。即使在输入文本框后按钮仍处于禁用状态,这会将 CanUndo 属性更改为 true。

我也试过

<Button IsEnabled="False" >
    <Button.Resources>
         <Style TargetType="Button">
               <Style.Triggers>
                      <DataTrigger Binding="{Binding CanUndo, ElementName=txtDocument}" Value="True">
                          <Setter Property="IsEnabled" Value="True" />
                      </DataTrigger>

               </Style.Triggers>
        </Style>
    </Button.Resources>
    <Image Source="/Images/32/undo.png" />
</Button>

我还尝试了两个单独的数据触发器,一个用于启用 true,一个用于 false,但仍然无法正常工作。我错过了一些基本的东西吗?就像这个属性可能不会引发绑定更改所需的事件?

谢谢

【问题讨论】:

    标签: wpf data-binding


    【解决方案1】:

    将 Button 的 command 属性设置为 ApplicationCommands.Undo 命令,并将 CommandTarget 属性指定为 TextBox。

    按钮将根据 ApplicationCommands.Undo 命令的 CanExecute 状态设置 IsEnabled 属性。当 CanExecute 为 false 时该按钮将被禁用,而当 CanExecute 为 true 时该按钮将被启用。

    <StackPanel>
      <TextBox x:Name="txtDocument">Test
      </TextBox>
      <Button Command="ApplicationCommands.Undo" CommandTarget="{Binding ElementName=txtDocument}" Content="Undo"/>
    </StackPanel>
    

    【讨论】:

    • 哇,太好了!完美运行,我不必添加自己的事件或命令。干杯!
    猜你喜欢
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    • 2018-01-21
    • 2011-08-26
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    相关资源
    最近更新 更多