2009-11-23 13 views
5

Estoy tratando de usar el estilo desencadena en Silverlight, así:Estilo desencadena en Silverlight

<Path Canvas.Top="20" Stroke="#FF808080" Data="M 0,20 20,0 40,20 Z" StrokeLineJoin="Round"> 
     <Path.Style> 
      <Style TargetType="{x:Type Path}"> 
       <Setter Property="Fill" Value="DarkGray"/> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding ElementName=userControl, Path=PumpRunning}" Value="True"> 
         <Setter Property="Fill" Value="DarkGreen"/>   
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Path.Style> 
    </Path> 

quiero hacer esto para que el valor de relleno de la ruta cambia si la bomba está funcionando o no. ¡El problema es que los disparadores de estilo no son compatibles con Silverlight!

¿Hay, de todos modos, alrededor de esto? ¿Hay alguna forma de hacer esto en el código? Lo he investigado, pero estoy perplejo.

Gracias

Ian convertidor de valores

Respuesta

13

un personalizado lograr un objetivo similar.

public class BoolToBrushConverter : IValueConverter 
{ 
    public Brush FalseBrush { get; set; } 
    public Brush TrueBrush { get; set; } 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
    if (value == null) 
    return FalseBrush; 
    else 
    return (bool)value ? TrueBrush : FalseBrush; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
    throw new NotImplementedException("This converter only works for one way binding"); 
    } 
} 

Con este convertidor en su lugar puede ajustar su XAML a: -

<Path Canvas.Top="20" Stroke="#FF808080" Data="M 0,20 20,0 40,20 Z" StrokeLineJoin="Round"> 
    <Path.Fill> 
    <Binding Path="PumpRunning" ElementName="userControl"> 
    <Binding.Converter> 
    <local:BoolToBrushConverter 
     FalseBrush="DarkGray" TrueBrush="DarkGreen" /> 
    </Binding.Converter> 
    </Binding> 
    </Path.Fill> 
</Path> 

Nota que desde su elección de color era local a su definición de trayectoria He insertado una instancia del convertidor directamente en la definición de mi Path así adquiriendo la misma semántica. Sin embargo, si necesita una cantidad de estas conversiones usando los mismos colores de par, puede colocar fácilmente la instancia de Convertidor en un recurso de página y usar la sintaxis de enlace de taquigrafía normal.

Cuestiones relacionadas