Domanda

Mi piacerebbe avere un comportamento Silverlight attivato da una modifica a una proprietà nel modello di visualizzazione per la mia pagina. Non riesco a capire come farlo, tuttavia.

Quindi, ho un modello di visualizzazione molto semplice:

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.......
}

Questo modello di vista è il contesto dei dati per un controllo utente che ha un blocco di testo associato a SomeProperty :

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

Tutto funziona bene. Ora vorrei associare un comportamento a myTextBlock attivato dalle modifiche a ChangingProperty nel mio modello di visualizzazione. Il comportamento dovrebbe evidenziare TextBlock , ad esempio (o qualcosa di più sofisticato).

Come posso specificare questo trigger? È possibile?

Cordiali saluti,

Ronald

È stato utile?

Soluzione

Qualcosa sulla falsariga della mia risposta a un problema simile qui potrebbe aiuto.

Ecco un esempio di come potresti applicare quella tecnica ai tuoi requisiti.

<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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top