Comportamento Silverlight basato sull'aggiornamento della proprietà del modello di visualizzazione
-
05-07-2019 - |
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
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>