使用Infragistics XamDataGrid我遇到了一种情况,我只想在设置了某个属性时才应用Style。但是,我认为这更像是一个普通的WPF /样式问题而不是特定于xamDataGrid。
以下风格是我目前使用的风格。它将checkBox添加到记录选择器区域:
<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),则根本不应用该样式。我希望添加记录行保留其默认样式。
这可能吗?
答案 0 :(得分:10)
您无法阻止在Style中应用Style,但您可以使用Style.Triggers阻止其Setter应用:
<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>