none
Duda respecto triggers RRS feed

  • Pregunta

  • Buenas a todos,

     estoy intentando hacer la actualización del texto de un TextBlock en base al cambio de item en un combobox a partir de triggers.

    <ComboBox x:Name="frutasComboBox" DisplayMemberPath="Nombre" />
    <TextBlock x:Name="frutaTextBox" />
    

    es decir, que el text de frutaTextBox se refresque cuando en frutasComboBox cambian el item y que coja una propiedad del item seleccionado. He intando lo siguiente pero no me he conseguido nada y no se si es viable o no.

    <StackPanel.Triggers>
          <EventTrigger RoutedEvent="ComboBox.SelectionChanged" SourceName="frutasComboBox">
            <BeginStoryboard>
              <Storyboard>
                <StringAnimationUsingKeyFrames Storyboard.TargetName="frutaTextBox" Storyboard.TargetProperty="(TextBox.Text)">
                  <DiscreteStringKeyFrame Value="{Binding ElementName=frutrasComboBox, Path=SelectedItem.Nombre}" />
                </StringAnimationUsingKeyFrames>
              </Storyboard>
            </BeginStoryboard>
          </EventTrigger>
    </StackPanel.Triggers>
    
    Gracias.
    miércoles, 22 de diciembre de 2010 15:55

Respuestas

  • Hola Cesar

    Para esto que quieres no es necesario usar animaciones y triggers.

    Lo primero que necesitas es indicarle al combobox cual es la propiedad que usará como valor seleccionado usando la propiedad Selected Value Path:

    <ComboBox x:Name="frutasComboBox" DisplayMemberPath="Nombre" SelectedValuePath="Nombre" />
    

    Y Ahora simplemente en el textblock haz binding al selectedvalue del combo:

    <TextBlock x:Name="frutaTextBox" Text="{Binding ElementName=frutrasComboBox, Path=SelectedValue}"/>
    
    

    De esta forma cada vez que cambies el valor seleccionado en el combo cambiará ese valor en el textblock.

    Un saludo, espero que te funcione.


    MCTS .NET Framework 3.5 Windows Forms Application Development
    MCTS .NET Framework 3.5 Windows Presentation Foundation
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    • Marcado como respuesta César Muñoz viernes, 24 de diciembre de 2010 14:47
    jueves, 23 de diciembre de 2010 11:06
    Moderador

Todas las respuestas

  • Hola Cesar

    Para esto que quieres no es necesario usar animaciones y triggers.

    Lo primero que necesitas es indicarle al combobox cual es la propiedad que usará como valor seleccionado usando la propiedad Selected Value Path:

    <ComboBox x:Name="frutasComboBox" DisplayMemberPath="Nombre" SelectedValuePath="Nombre" />
    

    Y Ahora simplemente en el textblock haz binding al selectedvalue del combo:

    <TextBlock x:Name="frutaTextBox" Text="{Binding ElementName=frutrasComboBox, Path=SelectedValue}"/>
    
    

    De esta forma cada vez que cambies el valor seleccionado en el combo cambiará ese valor en el textblock.

    Un saludo, espero que te funcione.


    MCTS .NET Framework 3.5 Windows Forms Application Development
    MCTS .NET Framework 3.5 Windows Presentation Foundation
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    • Marcado como respuesta César Muñoz viernes, 24 de diciembre de 2010 14:47
    jueves, 23 de diciembre de 2010 11:06
    Moderador
  • Hola Josue,

    me di cuenta al poco de escribir el mensaje. La única diferencia es que trabajé directamente con el SelectedItem, pero que es lo mismo. No se por que se me cruzó de hacerlo así ya que al principio quería jugar con la visibilidad y un converter, en fin, perdón por haceros perder el tiempo con la pregunta.

    Gracias.

    viernes, 24 de diciembre de 2010 14:51