2010-10-06 18 views
14

Tengo un botón y un cuadro de texto normales en una ventana WPF y quiero una plantilla para el botón con un EventTrigger que escucha Button.Click y luego establece una propiedad booleana de TextBox. Sin código detrás.EventTrigger con Setter en WPF?

Algo como esto:

<ControlTemplate.Triggers> 
    <EventTrigger SourceName="MyButton" RoutedEvent="Button.Click"> 
    <Setter TargetName="MyTextBox" Property="Focusable" Value="False" /> 
    </EventTrigger> 

Respuesta

14

Este es un ejemplo que establece y borra Focusable en un cuadro de texto de un EventTrigger.
Esperamos que pueda adaptar este ejemplo a su situación.

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition/> 
     <RowDefinition/> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 
    <TextBox 
     x:Name="tb" 
     Grid.Row="0" 
     Text="Here is some sample text"> 
    </TextBox> 
    <Button 
     x:Name="btnFocusTrue" 
     Grid.Row="1" 
     Content="Set True"> 
    </Button> 
    <Button 
     x:Name="btnFocusFalse" 
     Grid.Row="2" 
     Content="Set False"> 
    </Button> 
    <Grid.Triggers> 
     <EventTrigger RoutedEvent="Button.Click" SourceName="btnFocusTrue"> 
      <BeginStoryboard Name="FocusTrueStoryboard"> 
       <Storyboard > 
        <BooleanAnimationUsingKeyFrames 
         Storyboard.TargetName="tb" 
         Storyboard.TargetProperty="(TextBox.Focusable)"> 
         <DiscreteBooleanKeyFrame 
          KeyTime="00:00:01" 
          Value="True" /> 
        </BooleanAnimationUsingKeyFrames> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
     <EventTrigger RoutedEvent="Button.Click" SourceName="btnFocusFalse"> 
      <BeginStoryboard Name="FoucsFalseStoryboard"> 
       <Storyboard > 
        <BooleanAnimationUsingKeyFrames 
         Storyboard.TargetName="tb" 
         Storyboard.TargetProperty="(TextBox.Focusable)"> 
         <DiscreteBooleanKeyFrame 
          KeyTime="00:00:01" 
          Value="False" /> 
        </BooleanAnimationUsingKeyFrames> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </Grid.Triggers> 
</Grid> 
+2

Ahhh se perdió los discretos * fotograma clave-clases ... es una solución a mi problema, pero es un montón de XAML para una tarea tan sencilla ... Me gustaría que en una versión más corta –

+0

¿Cómo podemos establecer la valor de propiedad de dependencia personalizado en el desencadenante de evento ?? – Ujjwal27

Cuestiones relacionadas