none
Bindar texto de TexBlock con propiedad RRS feed

  • Pregunta

  • Hola,

    tengo un TextBlock que quiero bindar con una propiedad definida en mi CodeBehind:

    public string Mensaje { get; set; }
    


    El Mensaje cambiará durante el ciclo de vida de la aplicación y ha de verse reflejado en el textblock. He intentado varias opciones en el binding, pero no hay manera...

    <TextBlock x:Name="txtMensaje" Text="{Binding Mensaje}"/></TextBlock>
    


    ¿cómo podría bindar el texto a mi propiedad?

    Gracias,

    Dani. 

    martes, 12 de julio de 2011 9:27

Respuestas

  • Hola Kenny

    Te recomendaría que probaras usar MVVM aunque si solo estas en fase de aprendizaje entonces no lo hagas.

    Con respecto a tu problema te dejo un tutorial de Binding en Silverlight y esto donde se muestra la respuesta que buscas aunque no usan code-behind para crear el Mensaje sino un pequeño modelo http://forums.silverlight.net/forums/p/17929/60067.aspx.

     

    Saludos


    Antonio Lobo
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi blog
    • Marcado como respuesta DaniCCardenas miércoles, 13 de julio de 2011 7:38
    martes, 12 de julio de 2011 13:27

Todas las respuestas

  • Buenas Dani,

     primero te sobra volver a cerrar el TextBlock, después, si has puesto la propiedad en el CodeBehind, deberás hacer que el DataContext de la vista sea el mismo:

        public MainWindow()
        {
          InitializeComponent();
          Mensaje = "Si";
          DataContext = this;
        }
    

    en principio con eso ya te funcionará.

     

    Saludos.

    martes, 12 de julio de 2011 10:54
  • Hola Cesar, gracias por responder.

    Lo primero, aunque llevo bastante programando con .Net, soy muy novato con Silverlight, así que tal vez diga barbaridades ;)

    Lo del DataContext, lo habia pensado, pero el problema es que en la página hay varios controles y DataGrids que bindan con otros datos y no se si haciendolo así me afectará al resto de controles de la página.

    Los DataGrids los bindo desde code behind con el ItemSource.

    Saludos!

    martes, 12 de julio de 2011 11:17
  • Entonces el problema es otro. Yo me refería a WPF, pero entiendo que esto aplica igual. Las soluciones que puedes probar si te sirven son:

    • Hacer una clase aparte para poner como DataContext general en la vista y que tenga como propiedades lo que enlazas tanto en los DataGrids como en el resto de controles (incluido TextBox).
    • Que el DataContext del TextBox sea otra entidad que contenga la propiedad Mensaje.
    • Extraer los DataGrids a otros UserControl he incrustarlos en tu vista y gestionar sus DataContext.

    Suerte.

    martes, 12 de julio de 2011 11:39
  • Un comentario adicional... si deseas que futuros cambios en la propiedad "Mensaje" se vean reflejados en el textblock, debes convertir la propiedad en una Dependency Property o implementar la interfase INotifyPropertyChanged.
    Nestor Arturo Fernandez Ricaurte
    martes, 12 de julio de 2011 12:14
  • Hola Kenny

    Te recomendaría que probaras usar MVVM aunque si solo estas en fase de aprendizaje entonces no lo hagas.

    Con respecto a tu problema te dejo un tutorial de Binding en Silverlight y esto donde se muestra la respuesta que buscas aunque no usan code-behind para crear el Mensaje sino un pequeño modelo http://forums.silverlight.net/forums/p/17929/60067.aspx.

     

    Saludos


    Antonio Lobo
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi blog
    • Marcado como respuesta DaniCCardenas miércoles, 13 de julio de 2011 7:38
    martes, 12 de julio de 2011 13:27
  • Gracias por las respuestas!
    miércoles, 13 de julio de 2011 7:38