float CalculateIconX(bool focused) { var iconX = Padding.Left(); if (TextBox.TextAlignment.ToHorizontalAlignment() == HorizontalAlignment.Center) { var textWidth = TextBox.Font.GetTextWidth(TextBox.Text.Or(TextBox.Placeholder)); var textStart = (TextBox.ActualWidth + TextBox.Padding.Horizontal() - textWidth) / 2; if (!FirstRun && !focused) { textStart += CancelButtonActualWidth / 2; } iconX = textStart - TextBox.Padding.Left() - TextBox.Margin.Left(); iconX -= Icon.ActualWidth; iconX -= Icon.Margin.Right(); iconX = Math.Max(iconX, Padding.Left()); } return(iconX); }