2013-08-18 34 views
2

我想通过文本框的Validation.HasError启用/禁用按钮。 (随着故事板使用SourcName触发其他元素

我试图做下列方式:

故事板:

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

文本框:(绑定到民 - 仅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 property cannot be set within Style.Triggers section.

我喜欢一些帮助......

回答

0

所有我失踪,但括号中:

<DataTrigger Binding="{Binding ElementName=txt1,Path=(Validation.HasError)}" Value="True">