2009-09-28 13 views
14

Quindi ecco cosa sto cercando di fare in poche parole, inizierò solo con il codice e molto probabilmente avrà senso.DataTrigger su Enums come valore di trigger su uno stile WPF

<bl:InnerGlowBorder x:Name="glow" 
        InnerGlowColor="Teal"> 
    <bl:InnerGlowBorder.Style> 
    <Style TargetType="bl:InnerGlowBorder"> 
     <Style.Triggers> 
     <DataTrigger Binding="{Binding ViewUnitStatus}" 
        Value="UnitStatusModel.Pass"> 
      <Setter Property="InnerGlowColor" 
        Value="Green" /> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding ViewUnitStatus}" 
        Value="UnitStatusModel.Fail"> 
      <Setter Property="InnerGlowColor" 
        Value="Red" /> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding ViewUnitStatus}" 
        Value="UnitStatusModel.Indeterminate"> 
      <Setter Property="InnerGlowColor" 
        Value="Yellow" /> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding ViewUnitStatus}" 
        Value="UnitStatusModel.Warning"> 
      <Setter Property="InnerGlowColor" 
        Value="Orange" /> 
     </DataTrigger> 
     </Style.Triggers> 
    </Style> 
    </bl:InnerGlowBorder.Style> 
</bl:InnerGlowBorder> 

E la definizione enum:

namespace SEL.MfgTestDev.ESS.ViewModel 
{ 
    public enum UnitStatusModel 
    { 
     Indeterminate, 
     Pass, 
     Fail, 
     Warning, 
    } 
} 

mi manca un pezzo per fare questo lavoro? Ho trovato alcuni articoli WPF sulle enumerazioni che si basano su fonti di dati oggetto e non mi piace molto quella soluzione, non c'è qualcosa di più semplice che posso fare qui?

+2

InnerGlowColor = "Teal" Il problema era che se il campo impostato da uno stile è sovrascritto nella base, i trigger non cambieranno nulla. – Firoso

+0

+1 Stavo per rispondere a questo effetto. Pubblica la tua risposta e poi accettala. :) –

risposta

8

Ho trovato la soluzione ed è stato abbastanza sciocco.

Gli stili sono progettati come una sorta di modello visivo per un controllo, ma sono progettati come base per l'implementazione visiva, non come un modello visivo tutto-tutto-fine.

Come risultato, ho avuto una situazione in cui il mio modello dettava ciò che dovrebbe essere InnerGlowColor. Tuttavia, applicando l'attributo InnerGlowColor = "Teal" all'elemento, ho creato un override in effetti, ignorando il mio stile visivo. La soluzione era semplicemente rimuovere la proprietà di dipendenza nella dichiarazione di elemento.

Problemi correlati