2009-09-28 12 views
14

Así que esto es lo que estoy tratando de hacer en pocas palabras, voy a comenzar con el código y lo más probable es que tenga sentido.DataTrigger en Enums como el valor de activación en un WPF Style

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

Y la definición de enumeración:

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

Am Me falta una pieza para hacer este trabajo? He encontrado algunos artículos de WPF en enumeraciones que se basan en fuentes de datos de objetos y realmente no me gusta esa solución, ¿no hay algo más simple que pueda hacer aquí?

+2

InnerGlowColor = "Teal" El problema era que si el campo establecido por un estilo se anula en la base, los activadores no cambiarán nada. – Firoso

+0

+1 Estaba a punto de responder a ese efecto. Publica tu propia respuesta y luego acéptala. :) –

Respuesta

8

He encontrado la solución y fue bastante tonto.

Los estilos están diseñados como una especie de plantilla visual para un control, pero están diseñados como una base para la implementación visual, no como un modelo visual de be-all/end-all.

Como resultado, tuve una situación en la que mi plantilla dictó qué debería ser InnerGlowColor. Sin embargo, al aplicar el atributo InnerGlowColor = "Teal" al elemento, he creado una anulación en efecto, ignorando mi estilo visual. La solución fue simplemente eliminar la propiedad de dependencia en la declaración del elemento.

Cuestiones relacionadas