Pregunta

Me gustaría tener un comportamiento de Silverlight que se desencadena por un cambio en una propiedad en el modelo de vista de mi página. Sin embargo, no puedo averiguar cómo hacer esto.

Por lo tanto, tengo un modelo de vista muy simple:

public class MyViewModel : INotifyPropertyChanged
{
    private bool changingProperty;
    public bool ChangingProperty
    {
        get { return changingProperty; }
        set
        {
            if (changingProperty != value)
            {
                changingProperty = value;
                NotifyPropertyChanged("ChangingProperty");
            }
        }
    }
    public string SomeProperty { get { return "SomePropertyValue"; } }

    // INotifyPropertyChanged implementation here.......
}

Este modelo de vista es el contexto de datos para un control de usuario que tiene un bloque de texto vinculado a SomeProperty :

<TextBlock x:Key="myTextBlock" Text="{Binding SomeProperty}" />

Todo esto funciona bien. Ahora me gustaría adjuntar un comportamiento a myTextBlock que se activa con los cambios a ChangingProperty en mi modelo de vista. El comportamiento debe resaltar el TextBlock , por ejemplo (o algo más sofisticado).

¿Cómo especifico este disparador? ¿Es esto posible?

Saludos cordiales,

Ronald

¿Fue útil?

Solución

Algo parecido a mi respuesta a un problema similar aquí podría ayuda.

Este es un ejemplo de cómo podría aplicar esa técnica a su requerimiento.

<Grid.Resources>
   <local:BoolToBrushConverter x:Key="Highlighter"
    FalseBrush="Transparent" TrueBrush="Yellow" />
</Grid.Resources>

<Border Background="{Binding ChangingProperty, Converter={StaticResource Highlighter}}">
    <TextBlock x:Name="txtTarget" Text="{Binding SomeProperty}" />
</Border>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top