2011-09-06 8 views
7

Utilizzo di Infragistics XamDataGrid Ho riscontrato una situazione in cui desidero applicare uno stile solo se è stata impostata una determinata proprietà. Tuttavia, penso che questo sia più di una domanda generale in stile WPF/di quella specifica di xamDataGrid.Applicare lo stile in base al valore della proprietà

Lo stile seguente è quello che sto attualmente utilizzando. Aggiunge checkBox all'area del selettore di record:

<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> 

Il TargetType è RecordSelector. Se il record è o la riga filtro o la riga aggiungi record, non voglio mostrare la casella di controllo.

Voglio modificare questo in modo che se il record è la riga di record di aggiunta (IsAddRecord == true), quindi non applicare affatto lo stile. Voglio che la riga di record aggiunta mantenga il suo stile predefinito.

È possibile?

risposta

9

Non si può impedire che lo stile venga applicato anche dall'interno del Style in sé, ma è possibile impedire che i suoi Setter venga applicata utilizzando 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

Perfetto! Molte grazie. – Flack