我想通过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 部分中设置。
我很想得到一些帮助...