【问题标题】:C# DataGridTextColumn line breakC# DataGridTextColumn 换行符
【发布时间】:2016-12-11 17:23:43
【问题描述】:

必须有一个简单的解决方案,但我就是找不到。我有一个带有 DataGridTextColumns 的 DataGrid,其中包含数据。这工作正常。我只是似乎没有让单元格内的字符串换行,而是所有内容都在一行中(无论字符串有多长)。

dataGrid.IsReadOnly = true;
dataGrid.AutoGenerateColumns = false;
dataGrid.ItemsSource = ConvertListIntoPlantViewModel(lList);

DataGridTextColumn textColumn1 = new DataGridTextColumn();
DataGridTextColumn textColumn2 = new DataGridTextColumn();
DataGridTextColumn textColumn3 = new DataGridTextColumn();
textColumn3.MaxWidth = 200;

textColumn1.Header = "Name";
textColumn1.Binding = new Binding("Name");
textColumn2.Header = "Type";
textColumn2.Binding = new Binding("Type");
textColumn3.Header = "Info";
textColumn3.Binding = new Binding("Information");

dataGrid.Columns.Add(textColumn1);
dataGrid.Columns.Add(textColumn2);
dataGrid.Columns.Add(textColumn3);

假设我想制作文本,它最终在 textColumn3 中,以在单元格末尾(200 宽)进行换行。我如何实现这一目标?必须有一个简单的样式元素可以设置,对吧?我就是找不到。

我们将不胜感激,谢谢!

【问题讨论】:

    标签: c# wpf datagrid line-breaks datagridtextcolumn


    【解决方案1】:

    必须有一个简单的可以设置的样式元素,对吧?我就是找不到。

    是的,您可以将列的 ElementStyle 属性设置为以下样式以使文本换行:

    <Style TargetType="TextBlock">
        <Setter Property="TextWrapping" Value="Wrap" />
    </Style>
    

    您可以使用 XamlReader.Parse 方法以编程方式创建样式:

    string xaml = "<Style xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" TargetType=\"TextBlock\"><Setter Property=\"TextWrapping\" Value=\"Wrap\"/></Style>";
    Style style = System.Windows.Markup.XamlReader.Parse(xaml) as Style;
    
    DataGridTextColumn textColumn1 = new DataGridTextColumn();
    textColumn1.ElementStyle = style;
    

    【讨论】:

    • 谢谢,我更喜欢程序化方法。它完美地工作! :) TY
    猜你喜欢
    • 2010-12-25
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    相关资源
    最近更新 更多