绑定按钮IsEnabled到TextBox.CanUndo

时间:2014-05-26 00:55:04

标签: wpf data-binding

我正在尝试将按钮绑定到文本框的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,但仍然无效。我错过了什么基本的东西?也许这个属性可能不会引发绑定更改所需的事件?

由于

1 个答案:

答案 0 :(得分: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>