首先,我使用WPF和DataGrid是因为我想要列标题。然而,如果有一种方法可以实现这一点并且仍然具有列标题,我不会坚持使用这个解决方案。
现在,我进行了一些广泛的搜索,并尝试了通过谷歌找到的各种解决方案,但是这些解决方案似乎都无法解决我的问题,而且进一步的问题也无法翻译。
* 我尝试了以下方法:
<Style TargetType="DataGridCell" x:Key="LeftColumnStyle">
<Setter Property="FrameworkElement.HorizontalAlignment" Value="Left"/>
<Setter Property="FontSize" Value="14"/>
<Setter Property="TextBlock.TextWrapping" Value="Wrap" />
</Style>
<DataGridTextColumn Header="Comments" HeaderStyle="{StaticResource LeftHeaderStyle}" CellStyle="{StaticResource LeftColumnStyle}" Binding="{Binding Path=Comments, UpdateSourceTrigger=PropertyChanged}" Width="250" />
* 但是包装并没有起作用 -- 因此我尝试了以下方法:
<DataGridTextColumn Header="Comments" HeaderStyle="{StaticResource LeftHeaderStyle}" Binding="{Binding Path=Comments, UpdateSourceTrigger=PropertyChanged}" Width="250" >
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextBlock.TextWrapping" Value="Wrap" />
<Setter Property="TextBlock.TextAlignment" Value="Left"/>
<Setter Property="TextBlock.FontSize" Value="14"/>
<Setter Property="TextBlock.Width" Value="250"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
* 该列换行但不自动调整高度,因此似乎只是截断文本。
我尝试将Textblock直接放在DataGridTextColumn中,并将数据绑定到Textblock上,但DataGridTextColumn会出错,显示它不支持直接内容。
总之,我试图换行那些文本将超过预设单元格宽度的列(我有超过一个这样的列——描述和注释以及其他5个单元格不换行,因为它们从未超过预设单元格宽度),然而我不能使高度相应地调整。如果需要更多高度,则每行中的所有列都可以扩展高度,就像在Excel电子表格中发生的情况一样,但是我甚至无法在换行时使特定列扩展。提前感谢您的帮助。
DataGridTextColumn
中的文本块的方法是通过像您所做的那样使用ElementStyle
。您可以将第二个片段中的样式添加到资源中,并在每个列上使用Dynamic/StaticResource
。这将与第一个片段的工作量相同。 - XAMeLi