9

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

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

<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)の場合、スタイルをまったく適用しないようにします。追加レコード行にデフォルトのスタイルを保持させたい。

これは可能ですか?

4

1 に答える 1

10

スタイル自体の内部からスタイルが適用されるのを防ぐことはできませんが、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>
于 2011-09-06T16:44:28.817 に答える