2011-06-07 17 views
5

tuve algunos problemas para generar estilos WPF que contengan Triggers del código C#. Aquí está el código WPF que quiero generar a través de C#.generando estilos WPF que contienen Triggers del código C#

<Style.Triggers> 
    <Trigger Property="IsMouseOver" Value="true"> 
     <Setter Property="BitmapEffect"> 
      <Setter.Value> 
       <OuterGlowBitmapEffect GlowColor="Gold" GlowSize="10" /> 
      </Setter.Value> 
     </Setter> 
    </Trigger> 
</Style.Triggers> 

todavia me trataron de generar de esta manera:

Style style = new Style(); 
Trigger trigger = new Trigger(); 
Setter setter = new Setter(); 

style.Triggers.Add(trigger); 
trigger.Property = (DependencyProperty.Register("IsMouseOver", Type.GetType("IsMouseOver"), Type.GetType("Canvas"))); //Line not tested 
//trigger.Setters.Add(new Setter(new BitmapEffect()); //Line not working 

pero no pude encontrar la manera de utilizar trigger.Setters con un BitmapEffect

Gracias de antemano!

Respuesta

7

La traducción directa sería:

OuterGlowBitmapEffect effect = new OuterGlowBitmapEffect(); 
effect.GlowColor = Colors.Gold; 
effect.GlowSize = 10; 

Setter setter = new Setter(); 
setter.Property = UIElement.BitmapEffectProperty; 
setter.Value = effect; 

Trigger trigger = new Trigger(); 
trigger.Property = UIElement.IsMouseOverProperty; 
trigger.Value = true; 
trigger.Setters.Add(setter); 

Style style = new Style(); 
style.Triggers.Add(trigger); 

Esto se puede limpiar hasta:

var effect = new OuterGlowBitmapEffect() { 
    GlowColor = Colors.Gold, 
    GlowSize = 10, 
}; 

var setter = new Setter() { 
    Property = UIElement.BitmapEffectProperty, 
    Value = effect, 
}; 

var trigger = new Trigger() { 
    Property = UIElement.IsMouseOverProperty, 
    Value = true, 
    Setters = { setter }, 
}; 

var style = new Style() { 
    Triggers = { trigger }, 
}; 

Pero esto se basa en el estilo de codificación.