none
Actualizar estado descarga en textbox RRS feed

  • Pregunta

  • Hola,

    Tengo una aplicación en windows phone que se conecta a un servicio web al que por un lado llama para subir un fichero y luego recibe otro fichero que carga en la BdD local. Dado que el usuario debe esperar a que finalice he puesto un textbox que voy actualizando la información según se van realizando acciones, subida de datos, baja de datos, carga... El problema que tengo es no se actualiza el valor o mejor dicho no se refleja en el móvil cada vez que se hace un cambio, sino al finalizar bloques completos. No sé si el problema está en el funcionamiento asíncrono de los servicios web.

    ¿Alguna idea?

    Muchas gracias de antemano.

    miércoles, 26 de marzo de 2014 17:57

Todas las respuestas

  • Hola que tal para actualizar un TextBlock tienes que cambiar el valor de su propiedad Text en el code-behind o puedes utilizar un Binding a un elemento de su ViewModel, se asigna así

    Text="{Binding Texto}" 

    En el ViewModel puedes ir cambiando el Texto pero tienes que notificar el cambio implementando la interfaz INotifyPropertyChanged(la cuál tienes que implementar).

    Saludos

    jueves, 27 de marzo de 2014 0:01
  • Gracias por la ayuda, pero sigo un poco perdido. Me explico. He puesto el binding en el textblock

    <TextBlock Text="{Binding texto}" Height="30" HorizontalAlignment="Left" Margin="29,139,0,0" Name="TextBlockReplica" VerticalAlignment="Top" Width="421" />
    Luego he implementado el interfaz INotifyPropertyChanged
    Partial Public Class VentanaReplica
        Inherits PhoneApplicationPage
        Implements INotifyPropertyChanged
    
        Public Event PropertyChanged As PropertyChangedEventHandler _
            Implements INotifyPropertyChanged.PropertyChanged
    
        Private _texto As String = String.Empty
    
        Private Sub NotifyPropertyChanged(ByVal texto As String)
            RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(texto))
        End Sub
    
        Public Property texto() As String
            Get
                Return Me._texto
            End Get
    
            Set(ByVal value As String)
                If Not (value = _texto) Then
                    Me._texto = value
                    NotifyPropertyChanged("texto")
                End If
            End Set
        End Property

    Pero no me funciona, ¿qué me falta?

    Gracias de antemano!!

    Javi

    jueves, 27 de marzo de 2014 18:06
  • Puede que te falte asignar el DataConText a la vista(code-behind):

     this.DataContext = ObjetoDeVentanaReplica;

    Y pues modificar el texto dependiendo del estado de la descarga.

    viernes, 28 de marzo de 2014 18:30
  • Muchas gracias!!!

    He metido la asignación del DataConText en el constructor:

    Public Sub New() InitializeComponent() Me.DataContext = Me End Sub

    Pero aunque modifico el texo dependiendo del estado de la descarga no se refresca hasta que no finaliza. Algo me falta... :(

    viernes, 28 de marzo de 2014 19:35
  • Hola

    Ya parece que tiene todo para poder actualizar el texto, pero creo que no estas implementado el MVVM por lo que te recomiendo el siguiente tutorial:

    MVVM

    También creo que te hace falta un manejador de evento para monitorera el estado de la descarga ya que con la clase WebCliente me parece que lo puedes hacer con el evento DownloadProgressChanged, pero podrías crear tu propio EventHandler para cambiar el texto. 

    Suerte


    • Editado CesarDS1 martes, 1 de abril de 2014 17:54
    martes, 1 de abril de 2014 17:53