В моей программе с C# я использую System.Windows.Documents.Table. Когда я хочу установить вертикальное выравнивание TableCell, я обнаружил, что не могу. Он предоставляет только TextAlignment property, который может устанавливать горизонтальное выравнивание текстового содержимого. Есть ли способ установить его вертикальное выравнивание? Я буду благодарен за это.Как установить вертикальное выравнивание System.Windows.Documents.TableCell?
1
A
ответ
0
Потому что в одном TableRow имеется более одного TableCell. Это отличается от этого situation. Мое решение состоит в том, чтобы пересекать каждый таблеток, и в каждом таблетке я перемещаю каждый столбец в нем, вычисляю максимальную высоту в них как высоту строки, а затем устанавливаем обивку таблицы в соответствии с максимальной высотой. Вот метод, чтобы получить RowHeight:
private double getRowHeight(TableRow row)
{
double maxHeight = 0;
foreach (TableCell cell in row.Cells)
{
Rect startRect = cell.ElementStart.GetCharacterRect(LogicalDirection.Forward);
Rect endRect = cell.ElementEnd.GetNextInsertionPosition(LogicalDirection.Backward).GetCharacterRect(LogicalDirection.Forward);
double Height = (endRect.Bottom - startRect.Top);
maxHeight = maxHeight > Height ? maxHeight : Height;
}
return maxHeight;
}
Кажется, не так элегантно. Но это единственный метод, который я могу понять.
см. Второй ответ здесь: https://social.msdn.microsoft.com/Forums/vstudio/en-US/2dcb7dee-a467-46af-86f6-dec8cedcb810/table-cell-vertical-alignment?forum=wpf – niksofteng
Когда в одном TableRow есть только один TableCell, он работает хорошо. Но мне нужно больше, чем один TableCells в одном TableRow, и все они выравнивают вертикальный центр. И я заранее не знаю длину контента в TableCell, потому что контент будет динамически генерироваться программой. @dotnetkid – Frank
Или есть какой-либо способ окупить фактическую высоту TableCell? @dotnetkid – Frank