tutorial powerapps español ejemplos crear con aplicaciones .net wpf xaml binding datatrigger

.net - español - powerapps ejemplos



¿Cómo puedo anular una propiedad vinculada con un DataTrigger? (1)

Tengo el siguiente XAML utilizado para mostrar información detallada sobre un elemento seleccionado en una vista de lista. Quiero que el rectángulo muestre el color de información estándar detrás del texto, excepto cuando el elemento seleccionado representa un mensaje de error. El código siguiente no funciona como está y siempre muestra el color de la información. Funciona muy bien si no especifico un Fill para el elemento raíz <Rectangle /> .

<Rectangle Fill="{DynamicResource {x:Static SystemColors.InfoBrushKey}}" RadiusX="4" RadiusY="4"> <Rectangle.Style> <Style TargetType="{x:Type Rectangle}"> <Style.Triggers> <DataTrigger Binding="{Binding Path=CurrentMessage.Severity" Value="Error" > <Setter Property="Fill" Value="#20FF0000" /> </DataTrigger> </Style.Triggers> </Style> </Rectangle.Style> </Rectangle>

El fragmento no lo refleja, pero el código real tiene bastantes niveles de estado posibles para la gravedad, por lo que no quiero definir un disparador para cada gravedad posible. La lógica que quiero es "Usar el color de información a menos que la gravedad sea un error, luego usar rojo".

Estoy seguro de que he entendido mal algunos aspectos fundamentales de WPF, pero parece que no puedo precisarlo. ¿Puede alguien señalarme en la dirección correcta para que los datos desencadenantes que especifico anulen el valor de Relleno existente cuando sus condiciones sean verdaderas?


Ya casi estás ahí. En lugar de especificar el relleno "predeterminado" como un atributo en su Rectángulo, especifíquelo dentro del Estilo:

<Rectangle RadiusX="4" RadiusY="4"> <Rectangle.Style> <Style TargetType="{x:Type Rectangle}"> <Setter Property="Fill" Value="{DynamicResource {x:Static SystemColors.InfoBrushKey}}" /> <Style.Triggers> <DataTrigger Binding="{Binding Path=CurrentMessage.Severity" Value="Error" > <Setter Property="Fill" Value="#20FF0000" /> </DataTrigger> </Style.Triggers> </Style> </Rectangle.Style> </Rectangle>