2011-09-06 22 views
7

Praca z Infragistics XamDataGrid Napotkałem sytuację, w której chcę, aby styl był stosowany tylko wtedy, gdy ustawiono określoną właściwość. Jednak myślę, że jest to bardziej ogólne pytanie typu WPF/styl niż specyficzne dla xamDataGrid.Zastosuj styl na podstawie wartości właściwości

Poniższy styl jest obecnie używany. Dodaje pola CheckBox do obszaru selektora rekordów:

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

Typ docelowy to RecordSelector. Jeśli rekord jest wierszem filtru lub wierszem dodawania rekordów, nie chcę wyświetlać tego pola wyboru.

Chcę to zmienić, aby rekord był rekordem dodawania rekordów (IsAddRecord == true), więc nie należy go w ogóle stosować. Chcę, aby wiersz add record zachował swój domyślny styl.

Czy to możliwe?

Odpowiedz

9

Nie można zapobiec stylu przed aplikowany od wewnątrz samego stylu, ale można zapobiec jego ustawiaczy przed nanosić 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

Perfect! Wielkie dzięki. – Flack

Powiązane problemy