2009-07-07 10 views

Respuesta

17

Necesita un convertidor personalizado. Eche un vistazo a article

1

Algo podría haber sido agregado en SP1, pero la forma en que lo he logrado en el pasado es con un ValueConvertor que convierte el valor en booleano.

En su ejemplo, su convertidor devolvería verdadero si el valor era> 25, de lo contrario, falso. Si eso no tiene sentido, puedo poner un ejemplo :-)

4

No sin código detrás. La práctica habitual es:

  • Al trabajar con elementos de la interfaz de usuario, cree un IValueConverter y vincule a la propiedad utilizando el convertidor.
  • Al trabajar con datos enlazados, cree una propiedad bool en sus datos y desencadenar desde esa propiedad.
+0

me gusta la idea de usar un convertidor incluso con datos ligados. Al usar el patrón MVVM, ayuda a mantener el código de vista fuera del modelo de vista. –

29

Puede usar un desencadenante de datos y establecer el RelativeSource vinculante en Self. Los activadores de datos permiten el enlace y las vinculaciones le permiten tener conversores.

Ejemplo:

<Button Content="I change colour depending on my width for some reason"> 
     <Button.Triggers> 
      <DataTrigger 
       Binding="{Binding 
       Path=Width, 
       RelativeSource={RelativeSource Self}, 
       Converter={StaticResource isLessThanConverter}, 
       ConverterParameter=50}" 
       Value="True"> 
       <Setter Property="Button.Background" Value="Red" /> 
      DataTrigger> 
     Button.Triggers> 
    Button> 

Reference

+3

+1 para señalar el enfoque isLessThanConverter con ConverterParameter. – cplotts

+2

En el enlace, se debe usar 'ActualWidth' porque la propiedad' Width' es 'NaN' si no se establece explícitamente. – pogosama

Cuestiones relacionadas