gpt4 book ai didi

c# - WPF DataGrid 列 TextWrapping 以编程方式

转载 作者:可可西里 更新时间:2023-11-01 10:04:44 26 4
gpt4 key购买 nike

基本上,我想要实现的是仅让我的 DataGrid 的第二列启用文本换行,而不是在没有更多空间时将其剪切。

我的问题是 DataGrid 在 xaml 代码中是空的,我以编程方式从一个类生成它。

DataGrid 的 Xaml 是这样的:

<DockPanel Grid.Row="1">
<DataGrid Name="dg_Misc" Margin="2" Background="#FF212121" SelectionUnit="Cell" VerticalGridLinesBrush="Black" GridLinesVisibility="Vertical"/>
</DockPanel>

虽然我用来生成 DataGrid 的 c# 是这样的:

Oggetto oggetto = new Oggetto();
Oggetti.Add( new Oggetto() { } );

dg_Misc.ItemsSource = Oggetti;
dg_Misc.Items.Refresh();

在 Oggetto 类中,我有两个字符串,Name 和 Description,它们在生成 DataGrid 时成为列的两个标题,我希望 Description 列的单元格启用文本换行。

最佳答案

利用 AutoGeneratingColumn 事件。

在 XAML 中,将事件与事件处理程序 Hook :

<DataGrid Name="dg_Misc" Margin="2" 
Background="#FF212121"
SelectionUnit="Cell"
VerticalGridLinesBrush="Black"
GridLinesVisibility="Vertical"
AutoGeneratingColumn="DataGrid_AutoGeneratingColumn"/>

然后在后面的代码中像这样实现你的事件处理程序:

private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.Column.Header.ToString() == "Description")
{
var col = e.Column as DataGridTextColumn;

var style = new Style(typeof(TextBlock));
style.Setters.Add(new Setter(TextBlock.TextWrappingProperty, TextWrapping.Wrap));
style.Setters.Add(new Setter(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center));

col.ElementStyle = style;
}
}

我还添加了一个 VerticalAlignment 居中,这样看起来更好。请随意评论/删除该行。

关于c# - WPF DataGrid 列 TextWrapping 以编程方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35543044/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com