3

我想通过Validation.HasError文本框启用/禁用按钮。(带故事板

我试图通过以下方式做到这一点:

故事板:

<Window.Resources>
    <Storyboard x:Key="SB" x:Name="SB">
       <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.IsEnabled)">
          <DiscreteBooleanKeyFrame KeyTime="0" Value="False"/>
        </BooleanAnimationUsingKeyFrames>
    </Storyboard>
</Window.Resources>

文本框:(绑定到 Num - 仅 int)

 <TextBox x:Name="txt1" Grid.Row="1" Text="{Binding Num}" Height="50" Width="200">

按钮:

<Button x:Name="Btn1"  Height="50" Width="200" Content="My Button">
            <Button.Style>
                <Style>
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=txt1, Path=Validation.HasError}" Value="True">
                            <DataTrigger.EnterActions>
                                <BeginStoryboard Storyboard="{StaticResource SB}"/>
                            </DataTrigger.EnterActions>
                            <DataTrigger.ExitActions>
                                <RemoveStoryboard BeginStoryboardName="SB"/>
                            </DataTrigger.ExitActions>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>
        </Button>

这没用。

如果我将样式放在下面的文本框上,它可以工作(它不允许文本框):

  <TextBox x:Name="txt1" Grid.Row="1" Text="{Binding Num}" Height="50" Width="200">
        <TextBox.Style>
            <Style>
                <Style.Triggers>
                    <Trigger Property="Validation.HasError" Value="True">
                        <Trigger.EnterActions>
                            <BeginStoryboard Storyboard="{StaticResource SB}"/>
                        </Trigger.EnterActions>
                        <Trigger.ExitActions>
                            <RemoveStoryboard BeginStoryboardName="SB"/>
                        </Trigger.ExitActions>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </TextBox.Style>
    </TextBox>

问题是我不能像这样在触发器上设置 SourceName 并将其以相同的方式放在按钮上。

如果我这样做,我会收到错误:

SourceName 属性不能在 Style.Triggers 部分中设置。

我很想得到一些帮助...

4

1 回答 1

2

我所缺少的只是括号:

<DataTrigger Binding="{Binding ElementName=txt1,Path=(Validation.HasError)}" Value="True">
于 2013-08-18T09:54:23.937 回答