Wpf 基于特性值应用样式

Wpf 基于特性值应用样式,wpf,infragistics,xamdatagrid,Wpf,Infragistics,Xamdatagrid,在使用Infragistics XamDataGrid时,我遇到了这样一种情况:我希望仅在设置了某个属性时应用样式。然而,我认为这更像是一个一般的WPF/风格的问题,而不是特定于xamDataGrid的问题 下面的样式是我当前使用的样式。它向记录选择器区域添加复选框: <Style TargetType="{x:Type igDP:RecordSelector}"> <Setter Property="Template"> <Setter.V

在使用Infragistics XamDataGrid时,我遇到了这样一种情况:我希望仅在设置了某个属性时应用样式。然而,我认为这更像是一个一般的WPF/风格的问题,而不是特定于xamDataGrid的问题

下面的样式是我当前使用的样式。它向记录选择器区域添加复选框:

<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。如果记录是筛选行或添加记录行,我不想显示该复选框

我想对此进行更改,以便如果记录是add记录行(IsAddRecord==true),则根本不应用样式。我希望“添加记录”行保留其默认样式


这是可能的吗?

您不能阻止从样式本身内部应用样式,但可以阻止使用样式应用其设置程序。触发器:

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