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.

¿Por qué el valor enlazado no se muestra en el TextBlock?

Intento vincular una cadena a la propiedad Text del TextBlock, pero el valor no se muestra en mi vista.

xaml:

<textblock margin="10,0" datacontext="{Binding UpgradeViewModel, Source={StaticResource Locator}}">
    <run text="Other features: " fontweight="Bold"></run>
    <run text="{Binding UpgradeViewModel.AdditionalSelectedLevelData, Source={StaticResource Locator}, 
                        Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></run>
</textblock>

modelo de vista:

private string additionalSelectedLevelData;

public string AdditionalSelectedLevelData
{
    get => additionalSelectedLevelData;
    set
    {
        Set(ref additionalSelectedLevelData, value);
        Debug.WriteLine(value);
    }
}

Los valores de cambio de propiedad los compruebo utilizando Debug.WriteLine(value);.

Tengo una implementación para INotifyPropertyChanged (Set(ref additionalSelectedLevelData, value);), establezco el modo de enlace en TwoWay y establezco UpdateSourceTrigger=PropertyChanged.

Intento agregar un TextBox y vincular su propiedad Text con el mismo valor de cadena, y obtengo el mismo resultado, pero cuando escribo en el cuadro de texto, la cadena se muestra en el TextBlock y en el TextBox. No tengo ideas. La ruta de enlace es correcta al 100%.

Imagen del valor correcto

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema se encuentra en el código XAML. Es posible que desee asegurarse de que el DataContext esté configurado correctamente y que la ruta de enlace también sea correcta.

    En lugar de configurar el DataContext en el elemento TextBlock, intente configurarlo en el nivel del elemento padre y ajuste la ruta de enlace en consecuencia:

    XAML:

    <grid datacontext="{Binding UpgradeViewModel, Source={StaticResource Locator}}">
        <textblock margin="10,0">
            <run text="Otras características: " fontweight="Bold"></run>
            <run text="{Binding AdditionalSelectedLevelData, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></run>
        </textblock>
        <textbox text="{Binding AdditionalSelectedLevelData, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></textbox>
    </grid>
    

    Esto asegurará que el DataContext se establezca correctamente y que la ruta de enlace sea correcta.

    Otra cosa para verificar es si hay algún estilo o plantilla aplicada al TextBlock que pueda estar ocultando el texto.

    Si el problema persiste, es posible que desee intentar depurar el XAML utilizando herramientas como Snoop o WPF Inspector para ver si hay algún problema con el árbol visual.

Comments are closed.