En mi ventana hay varios controles GroupBox, cada uno con un control de cuadrícula. Para esas grillas quiero asignar un estilo. Pero solo para aquellas Grids que están directamente en un GroupBox, todas las demás Grids no deberían verse afectadas.Style DataTrigger con referencia al tipo de control principal
He intentado lo siguiente, que no funciona ya que GetType() no es propiedad.
<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Parent.GetType()}" Value="{x:Type GroupBox}">
<!-- <Setter Property="..." Value="..."/> -->
</DataTrigger>
</Style.Triggers>
</Style>
he encontrado una solución, pero no es realmente una solución hermosa, ya que tengo que modificar las GroupBoxes:
<Style TargetType="GroupBox">
<Setter Property="Tag" Value="blub"/>
</Style>
<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Parent.Tag, RelativeSource={RelativeSource Mode=Self}}" Value="blub">
<!-- <Setter Property="..." Value="..."/> -->
</DataTrigger>
</Style.Triggers>
</Style>
Obviamente, podría establecer el estilo para cada cuadrícula de forma manual, pero me estoy tratando de evitar eso, ya que hay muchos de ellos. Espero que encuentren la forma de que el primer ejemplo funcione.
Me temo que estás equivocado al respecto. Mi código funciona bien. El modo no es del tipo BindingMode, sino del tipo RelativeSourceMode. Me imagino que omitiste las llaves en RelativeSource = {RelativeSource Mode = Self} que hacen que Mode sea una propiedad de RelativeSource y no una de Binding. – PeterE
@Peter: tienes razón. Este desplazamiento horizontal me molestó y realmente no noté las llaves internas que hacen propiedad 'Mode' de RelativeSource. Gracias por señalar el error! :-) – Nawaz