2010-02-10 9 views
21

Estoy trabajando en una aplicación WPF y estoy luchando con un disparador de datos. Me gustaría enlazar el valor de la condición de disparo a algún objeto que tengo:Uso del enlace para la propiedad Value de DataTrigger condición

<DataTrigger Binding="{Binding Foo}" 
      Value="{Binding ElementName=AnotherElement, Path=Bar}">.. 

Sin embargo, no se me permite, ya que no parece ser posible utilizar fijaciones para la propiedad Value. ¿Lo es? ¿Puedo lograr esto de alguna manera? Me sale el siguiente error:

A 'Binding' cannot be set on the 'Value' property of type 'DataTrigger'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject.

Respuesta

33

No, no es posible. Como dice el mensaje de error, solo las propiedades de dependencia pueden ser objetivos de enlaces WPF y DataTrigger.Value no es una propiedad de dependencia. Por lo tanto, deberá asignar un valor real.

La solución consiste en utilizar un enlace múltiple cuyas vinculaciones secundarias son las dos vinculaciones que desea comparar, con un convertidor de valor IMultiValue que devuelve verdadero si las dos entradas son iguales y falsas si son desiguales. El DataTrigger puede usar ese MultiBinding y un Value of True.

8

Para explicar la respuesta: here es un ejemplo de cómo se hace.

Cuestiones relacionadas