¿Cómo puedo proporcionar múltiples condiciones para la activación de datos en WPF?
wpf
datatrigger
Sumeru Suresh
fuente
fuente
@jasonk: si desea tener "o", niegue todas las condiciones desde (A y B) <=> ~ (~ A o ~ B)
pero si tiene valores distintos a booleanos, intente usar convertidores de tipo:
puede usar los valores en el método Convertir de la forma que desee para producir una condición que le convenga.
fuente
conditionConverter
? ¿Cómo estamos especificando "Portland" y "OR" como nuestras dosor
opciones en este ejemplo?Para elaborar la respuesta de @ serine e ilustrar el trabajo con una condición de valores múltiples no trivial: necesitaba mostrar una superposición de "atenuación" en un elemento para la condición booleana
NOT a AND (b OR NOT c)
.Para implementar esta lógica, hice un
IMultiValueConverter
nombre genérico (torpemente) para que coincida con mi lógicaEn XAML, uso esto
MultiDataTrigger
en un<Style><Style.Triggers>
recursoY para completar, mi convertidor se define en un
ResourceDictionary
fuente
ESTA RESPUESTA ES SOLO PARA ANIMACIONES
Si desea implementar la lógica AND, debe usar MultiTrigger, aquí hay un ejemplo:
supongamos que queremos hacer algunas acciones si la propiedad Text = "" (cadena vacía) AND IsKeyboardFocused = "False", entonces su código debería tener el siguiente aspecto:
Si desea implementar la lógica OR, hay un par de formas, y depende de lo que intente hacer:
La primera opción es usar múltiples disparadores.
Entonces, suponga que quiere hacer algo si Text = "" OR IsKeyboardFocused = "False",
entonces su código debería verse así:
Pero el problema en esto es ¿qué haré si quiero hacer algo si Text ISN'T null OR IsKeyboard = "True"? Esto se puede lograr con el segundo enfoque:
recuerde la regla de De Morgan, que dice! (! X &&! Y) = x || y.
Entonces lo usaremos para resolver el problema anterior, escribiendo un disparador múltiple que se dispara cuando Text = "" e IsKeyboard = "True", y haremos nuestras acciones en ACCIONES DE SALIDA , como esta:
fuente