我正在设置一些我的datagrid列是可以包装的,下面有很多重复的代码。我希望将其提取到一个样式,然后可能在DataGridTextColumn级别定义它,但我无法定义文本框,只能定义标题。我尝试的是不完整的,不允许我找到要包装的列值:
<Style x:Key="GridColumnWrap" TargetType="DataGridColumnHeader">
<Setter Property="TextBlock.Text" Value="{Binding Value}" />
</Style>
当前的XAML布局:
<DataGrid.Columns>
<DataGridTextColumn Header="Key" Binding="{Binding Key}" />
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header>
<TextBlock Text="Summary" />
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Summary}" TextWrapping="Wrap"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header>
<TextBlock Text="Description" />
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Description}" TextWrapping="Wrap"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Status" Binding="{Binding Status}" />
<DataGridTextColumn Header="Resolution" Binding="{Binding Resolution}" />
</DataGrid.Columns>
答案 0 :(得分:1)
尝试使用DataGridTextColumn.ElementStyle
,如下所示:
<Window.Resources>
<Style x:Key="WrapStyle" TargetType="{x:Type TextBlock}">
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
</Window.Resources>
<DataGrid Name="MyDataGrid" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="TestWrap"
Binding="{Binding Path=TestValue}"
ElementStyle="{StaticResource WrapStyle}" />
</DataGrid.Columns>
</DataGrid>