6

是否可以显示...a 中某个单元格的内容DataGrid是否大于指定的ColumnWidth?就像是:

-------------------------------
|   Name   |    Last Name     |
-------------------------------
| LongNa.. |                  |
-------------------------------
4

2 回答 2

12

TextTrimming就是你要找的。使用DataGridTemplateColumn并将 aTextBlock插入CellTemplate其中支持TextTrimming。样本 -

<DataGrid ItemsSource="{Binding ItemsSourceForYourGrid}">
   <DataGrid.Columns>
      <DataGridTemplateColumn Width="20">
         <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
              <TextBlock Text="{Binding Name}" TextTrimming="CharacterEllipsis"/>
            </DataTemplate>
         </DataGridTemplateColumn.CellTemplate>
      </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>
于 2012-10-14T07:18:55.007 回答
0

是的你可以。

试试这个代码,我认为它会工作:

public static string StringEllipsis(DataGrid grid, string text, float columnWidth)
{
    // you can customize this variables, for your preferences
    string yourEllipsis = "..."; 
    string yourFontFamily = "Arial";
    float yourFontSize = 9F;
    float yourTolerance = 1F;

    Graphics graphics = grid.CreateGraphics();
    if (graphics.MeasureString(text, new Font(yourFontFamily, yourFontSize)).Width <= (columnWidth + yourTolerance))
        return text;

    while (graphics.MeasureString(text + yourEllipsis, new Font(yourFontFamily, yourFontSize)).Width > (columnWidth + yourTolerance))
        text = text.Substring(0, text.Length - 1);

    return text + yourEllipsis;
}
于 2012-10-14T01:50:21.790 回答