way two que property data context wpf data-binding

two - ¿Cómo puedo activar un cambio de estilo si DataContext es nulo o no utiliza WPF?



wpf binding types (1)

Tengo una página con varios controles. Los controles están obligados a mostrar los valores que obtienen del DataContext de la página. Lo que me gustaría hacer es mostrar otra apariencia de la página si el DataContext es nulo. En algunos casos, los controles de la página deberían mostrarse de forma diferente si "su" propiedad está configurada o no.

¿Es posible crear un enlace para ver si se establece DataContext?

Lo que hice como solución fue agregar una propiedad IsDataContextSet a la página y especificar un enlace como:

Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Page}}, Path=IsDataContextSet}" Value="false"

Esto funciona como espero, pero tengo la sensación de que es una forma más elegante de hacerlo. O al menos o más de manera WPFish.


Dado el escenario que describes, establecería las propiedades con un estilo y un disparador de datos. El disparador de datos usaría el enlace predeterminado que es el contexto de datos.

Un ejemplo podría verse así:

<Border> <Border.Style> <Style TargetType="Border"> <Setter Property="Background" Value="Orange" /> <Style.Triggers> <DataTrigger Binding="{Binding}" Value="{x:Null}"> <Setter Property="Background" Value="Yellow" /> </DataTrigger> </Style.Triggers> </Style> </Border.Style> </Border>

El borde será naranja a menos que el contexto de datos sea nulo, en cuyo caso el fondo será amarillo.