Здравствуйте, у меня есть этот код XAML
<DataTemplate x:Key="BLUnitPriceTemplate">
<TextBlock x:Name="CellTB"
Padding="10,3"
Style="{StaticResource DarkSmallFontStyle}"
Text="{Binding UnitPrice, StringFormat={}{0:N2}}" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding LineType}" Value="Total">
<Setter Property="Background" Value="{StaticResource PinkBackgroundBrush}"
TargetName="CellTB" />
<Setter Property="Style" Value="{StaticResource SmallFontStyle}"
TargetName="CellTB" />
</DataTrigger>
<DataTrigger Binding="{Binding LineType}" Value="Rate">
<Setter Property="Background" Value="#CCCCCC"
TargetName="CellTB" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
<DataTemplate x:Key="BLRemiseTemplate">
<TextBlock x:Name="CellTB"
Padding="10,3"
Style="{StaticResource DarkSmallFontStyle}"
Text="{Binding Remise, StringFormat={}{0:N2}}" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding LineType}" Value="Total">
<Setter Property="Background" Value="{StaticResource PinkBackgroundBrush}"
TargetName="CellTB" />
<Setter Property="Style" Value="{StaticResource SmallFontStyle}"
TargetName="CellTB" />
</DataTrigger>
<DataTrigger Binding="{Binding LineType}" Value="Rate">
<Setter Property="Background" Value="#CCCCCC"
TargetName="CellTB" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
Но, как вы можете видеть, триггер шаблона данных почти такой же.Изменяется только привязка текста.
Я считаю это избыточным и уродливым AF
Есть ли способ разложить триггер шаблона данных, чтобы использовать его в нескольких DataTemplate?
РедактироватьОтвет был удачным, но, похоже, не сработал из-за установки стиля в определении стиля.Я решил добавить некоторый контекст, пока работаю с ним, если кто-то прочитал это и хочет попробовать.
Мои шаблоны используются этой сеткой данных
<DataGrid ItemsSource="{Binding Details}">
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="Background" Value="LightGray"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=DataGridRow}}" Value="True">
<Setter Property="Background" Value="LightBlue"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTemplateColumn
CellStyle="{StaticResource AppManagementAddCellStyle}"
Header="{x:Static languages:ResAbbreviations.PU}"
Width="60"
CellTemplate="{StaticResource BLUnitPriceTemplate}"
/>
<DataGridTemplateColumn
CellStyle="{StaticResource AppManagementAddCellStyle}"
Header="{x:Static languages:ResAbbreviations.DiscountPercent}"
Width="60"
CellTemplate="{StaticResource BLRemiseTemplate}"
/>
</DataGrid.Columns>
</DataGrid>