none
Variables entre VB y xaml RRS feed

  • Pregunta

  • Lo primero, un saludo a tod@s, soy nuevo en el foro y en WPF, espero poder contribuir en todo lo que pueda.

    Como primera pregunta, y que no he encontrado o no me ha quedado claro ni siquiera en foros extranjeros, es si XAML puede utilizar variables creadas en el mismo proyecto en vb. De no poderse hacer, cuál seria el mejor camino para poder compartir las variables entre XAML y VB? Por ejemplo, quiero que cuando haga clic con el raton sobre una foto, ésta se amplie a modo "zoom in" en el punto en donde haya hecho dicho clic. Para ello, mi idea es pasar X e Y del ratón hacia el Storyboard hecho en XAML. Espero que me podais ayudar, gracias y un saludo a todo el foro.

    viernes, 1 de febrero de 2013 13:43

Todas las respuestas

  • Tienes varias formas de pasar datos entre tu código vb y xaml.

    Puedes modificar las propiedades de cualquier elemento xaml que tenga una propiedad Name simplemente escribiendo:

    Nombre.Propiedad = valor

    Probablemente ya lo hayas hecho para cambiar el Content de un botón, el Text de un TextBlock, etc..

    En tu caso concreto, si por ejemplo tienes un StoryBoard como este:

    <Storyboard>
        <DoubleAnimation Name="Animacion1" Duration="00:00:00.5" Storyboard.TargetName="{Binding Boton1}" Storyboard.TargetProperty="(Canvas.Top)" From="0" To="100" />
    </Storyboard>

    Para modificar el From basta con escribir en tu código: Animacion1.From = 40

    Otra forma, que yo considero mucho más recomendable, pero que probablemente te resultará confusa al principio, puesto que te obligaría a cambiar de mentalidad, es separar la lógica de negocio y la de presentación, haciendo uso de MVVM, mediante binding:

    <Storyboard>
        <DoubleAnimation Name="Animacion1" Duration="00:00:00.5" Storyboard.TargetName="{Binding Boton1}" Storyboard.TargetProperty="(Canvas.Top)" From="{Binding FromAnimacion}" To="100" />
    </Storyboard>

    Donde FromAnimacion sería una propiedad del DataContext que tenga ese elemento. La gran ventaja de usar MVVM se aprecia cuando los elementos están definidos en Templates, por ejempolo en un listbox, muy complicados de tratar mediante el enfoque que te conté anteriormente.

    Espero que te sea útil.

    lunes, 4 de febrero de 2013 21:53