2011-09-06 10 views
7

Trabajar con Infragistics XamDataGrid Encontré una situación en la que deseo que se aplique un estilo solo si se establece una propiedad determinada. Sin embargo, creo que esto es más una pregunta general de estilo WPF que xamDataGrid específica.Aplicar estilo basado en el valor de propiedad

El estilo de abajo es lo que estoy usando actualmente. Agrega checkBoxes al área del selector de registros:

<Style TargetType="{x:Type igDP:RecordSelector}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type igDP:RecordSelector}"> 
       <CheckBox x:Name="HeaderCheckBox" 
          HorizontalAlignment="Center" 
          VerticalAlignment="Center" 
          IsChecked="{Binding Path=DataItem.IsChecked}"> 
       </CheckBox> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsFilterRecord" Value="True"> 
        <Setter TargetName="HeaderCheckBox" Property="Visibility" Value="Collapsed"/> 
        </Trigger> 
        <Trigger Property="IsAddRecord" Value="True"> 
        <Setter TargetName="HeaderCheckBox" Property="Visibility" Value="Collapsed"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

TargetType es RecordSelector. Si el registro es la fila de filtro o la fila de agregar registro, no quiero mostrar la casilla de verificación.

Quiero cambiar esto para que si el registro es la fila para agregar registro (IsAddRecord == verdadero), entonces no aplique el estilo en absoluto. Quiero que la fila de agregar registro retenga su estilo predeterminado.

¿Esto es posible?

Respuesta

9

No se puede evitar que el estilo de ser APLICADA desde dentro del propio estilo, pero se puede evitar que su setter de ser aplicado utilizando Style.Triggers:

<Style TargetType="{x:Type igDP:RecordSelector}"> 
    <Style.Triggers> 
     <Trigger Property="IsAddRecord" Value="False"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type igDP:RecordSelector}"> 
         <CheckBox x:Name="HeaderCheckBox" 
            HorizontalAlignment="Center" 
            VerticalAlignment="Center" 
            IsChecked="{Binding Path=DataItem.IsChecked}"> 
         </CheckBox> 
         <ControlTemplate.Triggers> 
          <Trigger Property="IsFilterRecord" Value="True"> 
          <Setter TargetName="HeaderCheckBox" Property="Visibility" Value="Collapsed"/> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Trigger> 
    </Style.Triggers> 
</Style> 
+0

perfecto! Muchas gracias. – Flack

Cuestiones relacionadas