我也试着创造一个
TextBlock
但在访问IsSelected属性时还有其他问题。
这个
ElementStyle
应该有效:
<DataGridTextColumn Binding="{Binding Name}" Width="100">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=DataGridCell}}" Value="True">
<Setter Property="TextWrapping" Value="Wrap" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
如果要自动生成列,可以定义
元素样式
作为资源并处理
AutoGeneratingColumn
事件:
private void dataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
DataGrid dataGrid = (DataGrid)sender;
DataGridTextColumn column = e.Column as DataGridTextColumn;
if (column != null)
{
column.ElementStyle = dataGrid.Resources["ElementStyle"] as Style;
}
}
XAML:
<DataGrid x:Name="dataGrid" AutoGeneratingColumn="dataGrid_AutoGeneratingColumn">
<DataGrid.Resources>
<Style x:Key="ElementStyle" TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=DataGridCell}}" Value="True">
<Setter Property="TextWrapping" Value="Wrap" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
</DataGrid>