es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

C# WPF .Net4.8 Framework ReadOnly TextBox Text Binding Delayed Update Enlace retardado de actualización de texto en cuadro de texto de solo lectura utilizando C# WPF .Net4.8 Framework.

Tengo una cadena “ConnectionStatus” que está vinculada a la propiedad de texto de un cuadro de texto.

private string connectionStatus;
public string ConnectionStatus
{
    get
    {
        return connectionStatus;
    }

    set
    {
        if (connectionStatus != value)
        {
            connectionStatus = value;
            NotifyPropertyChanged("ConnectionStatus");
        }
    }
}

Tengo un botón conectado a un RelayCommand:

void ConnectCmd(object parameter)
{
    ConnectionStatus = "Conectando...";

    // Realizar algunas operaciones

    ConnectionStatus = "Conectado";
}

XML

<textbox x:name="TextBlock_ConectedToName" grid.column="1" grid.row="0" grid.columnspan="2" height="40" margin="5" fontsize="26" isreadonly="True" horizontalcontentalignment="Center" verticalcontentalignment="Center" text="{Binding ConnectionStatus, UpdateSourceTrigger=PropertyChanged}"></textbox>

Cuando se presiona el botón, se llama al comando de relevo, que luego actualiza la cadena “ConnectionStatus” a “Conectando…”, luego realiza algún procesamiento, abre un puerto serie y cambia ConnectionStatus a “Conectado” si tiene éxito. Sin embargo, el texto “Conectando…” nunca se muestra, la actualización del texto solo parece desencadenarse cuando la función RelayCommand termina. ¿Cómo puedo hacer que el texto se actualice inmediatamente?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para actualizar el texto de inmediato, puedes utilizar el objeto Dispatcher para actualizar el subproceso de la interfaz de usuario (UI). Modifica tu función ConnectCmd de la siguiente manera:

    void ConnectCmd(object parameter)
    {
    ConnectionStatus = “Conectando…”;

    // Realiza algunas operaciones

    Application.Current.Dispatcher.Invoke(() =>
    {
    ConnectionStatus = “Conectado”;
    });
    }

    Esto invocará el subproceso de la interfaz de usuario (UI) para actualizar el texto inmediatamente después de que finalice la sección “Realiza algunas operaciones”.

Comments are closed.