您可以使用转换器按名称选择哪一列!
我这样创建我的专栏:(也许它适用于另一种方法)
DataGridTextColumn column = new DataGridTextColumn();
column.Binding = new Binding("ColumnName");
dataGrid.Columns.Add(column)
在您的DataTrigger 中,当列具有特定名称时,您定义不同的DataTemplate:
...
xmlns:tools="clr-namespace:App.Tools"
...
<ResourceDictionary>
<tools:CustomButtonConverter x:Key="CustomButtonConv" />
<DataTemplate x:Key="CustomButton">
<Button Click="HandlerClick" />
</DataTemplate>
<Style x:Key="DataGridCellStyle" TargetType="DataGridCell">
<Style.Triggers>
<DataTrigger Binding="{Binding Column, RelativeSource={RelativeSource Mode=Self}, Converter={StaticResource CustomButtonConv}}" Value="ColumnName">
<Setter Property="ContentTemplate" Value="{StaticResource CustomButton}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ResourceDictionary>
...
<DataGrid x:Name="dataGrid" CellStyle="{StaticResource DataGridCellStyle}" />
将ColumnName 替换为您的专栏名称...
您的转换器:
namespace App.Tools
{
public class CustomButtonConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var dataGridTextColumn = value as DataGridTextColumn;
return dataGridTextColumn.SortMemberPath;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
}
}
}