...
a の一部のセルの内容がDataGrid
指定された値よりも大きいかどうかを示すことは可能ColumnWidth
ですか? 何かのようなもの:
-------------------------------
| Name | Last Name |
-------------------------------
| LongNa.. | |
-------------------------------
TextTrimming
あなたが探しているものです。を使用し、をサポートする にDataGridTemplateColumn
を挿入します。サンプル -TextBlock
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>
はい、できます。
このコードを試してみてください。うまくいくと思います:
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;
}