2011-09-06 14 views
7

Infragistics XamDataGridを使用する特定のプロパティが設定されている場合にのみスタイルを適用する状況が発生しました。しかし、これはxamDataGrid固有のものよりも一般的なWPF /スタイルの質問のほうが多いと思います。プロパティ値に基づいてスタイルを適用

以下のスタイルは現在私が使用しているスタイルです。レコードセレクタ領域にcheckBoxesを追加します。

<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はRecordSelectorです。レコードがフィルタ行またはレコード行の追加の場合は、チェックボックスを表示しません。

これを変更して、レコードがレコードの追加行(IsAddRecord == true)の場合は、スタイルをまったく適用しないようにします。レコードを追加する行にデフォルトスタイルを保持したい。

これは可能ですか?

答えて

9

あなたはスタイル自体からapliedされるのスタイルを防ぐことはできませんが、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

パーフェクト!どうもありがとう。 – Flack

関連する問題