Я работаю над CustomControl
, который наследуется от TextBox
и его можно изменить, удерживая Ctrl
при перетаскивании мыши, но иногда, когда вы изменяете размер, линии обрезаются следующим образом:
Если это произойдет, я бы хотел отрегулировать выбранную высоту, чтобы линии не обрезались.Это код, который у меня есть на данный момент:
double LineHeight = ??;
double requiredHeightAdjustment = this.Height % LineHeight;
if (requiredHeightAdjustment != 0)
{
this.Height -= requiredHeightAdjustment;
}
- Правка -
На случай, если кому-то понадобится это в будущем, вот что я закончил:
double fontHeight = this.FontSize * this.FontFamily.LineSpacing;
double requiredHeightAdjustment = this.Height % fontHeight;
var parent = this.Parent as FrameworkElement;
if (requiredHeightAdjustment != 0)
{
double upwardAdjustedHeight = (fontHeight - requiredHeightAdjustment) + this.Height;
if (requiredHeightAdjustment >= fontHeight / 2 && this.MaxHeight >= upwardAdjustedHeight
&& (parent == null || parent.ActualHeight >= upwardAdjustedHeight))
this.Height = upwardAdjustedHeight;
else
this.Height -= requiredHeightAdjustment;
}
Это решение также вносит наименьшее необходимое изменение в выбранный размер TextBox
вместо того, чтобы всегда вносить отрицательное изменение.