6

...a の一部のセルの内容がDataGrid指定された値よりも大きいかどうかを示すことは可能ColumnWidthですか? 何かのようなもの:

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

2 に答える 2

12

TextTrimmingあなたが探しているものです。を使用し、をサポートする にDataGridTemplateColumnを挿入します。サンプル -TextBlockCellTemplateTextTrimming

<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 に答える