2012-09-19 17 views
5

Durante la lettura su DataTrigger su MSDN, si diceI Trigger/DataTrigger tornano allo stato precedente se non è più vero in WPF?

Rappresenta un trigger che applica i valori delle proprietà o esegue azioni quando i dati legato soddisfa una determinata condizione.

Significa

Quando un trigger è vero cambia il valore al valore desiderato.

Ma, si può dedurre?

Quando non è più vero, restituisce il valore al valore precedente.


come sono arrivato a questa conclusione

ho fatto questo

<Style x:Key="fd" TargetType="SomeControl"> 
<Setter Property="Control.Template"> 
    <Setter.Value> 
    <ControlTemplate> 
    <Button Content="Foo" x:Name="mybutton"> 
    <ControlTemplate.Triggers> 
    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=FooProperty}" 
        Value="Collapsed"> 
     <Setter Property="IsEnabled" Value="False" TargetName="mybutton"/> 
     <Setter Property="Opacity" Value="0.5" TargetName="mybutton"/> 
    </DataTrigger> 
    </ControlTemplate.Triggers> 
    </ControlTemplate> 
    </Setter.Value> 
</Setter> 
</Style> 

Quando FooProperty diventa crollato cambia di mybutton IsEnabled-False e Opacity-0.5

Ora quando FooProperty diventa visibile cambia il mybutton da IsEnabled a True e Opacity a 1 anche se non ho scritto alcun trigger per tornare ai valori precedenti.

È questa una funzionalità integrata di DataTrigger per ripristinare il valore precedente Quando non è più vero?

Se sì, c'è un documento Microsoft/MSDN per dimostrarlo?

risposta

4

Quello che stai dicendo è corretto.

Quanto attuale doc per dimostrare questo, ricerca da qui:

http://msdn.microsoft.com/en-us/library/ms745683.aspx

http://msdn.microsoft.com/en-us/library/system.windows.trigger.aspx

"sezione Osservazioni"

WPF definisce proprietà che corrispondono a utenti finali azioni, come ad esempio la proprietà IsMouseOver impostata su true quando l'utente alza lo cursore su un UIElement o la corrispondente proprietà IsMouseOver di un oggetto ContentElement . Rappresentando le azioni dell'utente finale nei valori delle proprietà, insieme all'elemento Trigger, consente agli stili WPF di modificare i valori delle proprietà in base a quelle azioni dell'utente finale, il tutto dal markup interno.

Le proprietà modificate dai trigger vengono reimpostate automaticamente sul valore precedente quando la condizione innescata non è più soddisfatta. I trigger sono ottimizzati per gli stati transitori che si prevede di cambiare e tornare allo stato originale, ad esempio IsPremuto sul pulsante e IsSelected su ListBoxItem. La proprietà di interesse deve essere una proprietà di dipendenza .

Si noti che è necessario specificare le proprietà Property e Value su un trigger affinché il trigger sia significativo. Se una o entrambe le proprietà non sono impostate, viene generata un'eccezione.

buona fortuna :)

Problemi correlati