WPF:文本框在边框和文本之间的空间

时间:2020-10-30 10:15:33

标签: wpf

我有一个TextBox,其Width等于字母“ A”的宽度。但是字母显示不正确。

是否可以避免边界和“ A”开头之间的间隔? Padding="0"无济于事。

示例:

Example

1 个答案:

答案 0 :(得分:0)

使用诸如Snoop之类的工具检查视觉树时,您会发现<div class='todo'> <div class='todo__sidebar'> <ul> <li>item 1</li> <li>item 2</li> </ul> </div> </div> <div class='modal'> <span>12345</span> </div>TextBox组成,其中Border包含ScrollViewer,其中ScrollContentPresenter呈现了实际的内容TextBoxTextBoxView(1)内部类处理文本框中内容的呈现,默认情况下左右边距设置为“ 2”(2)。 我认为您无法设置TextBoxView本身的样式以覆盖默认边距值,但是由于它在内部设置为“ 2”,因此可以放心地假设将Textbox上的Padding设置为“ -2,0”是可以的。

编辑:

TextBoxView documentation中 您会发现在TextBoxView构造函数(第38行)中,Margin属性设置为BidiCaretIndicatorWidth的常量值(第1219行): 因此,可能有必要在TextBox的末尾保留一些空间,以便插入符号可见

static TextBoxView()
{
// Set a margin so that the bidi caret has room to render at the B edges of content.
   MarginProperty.OverrideMetadata(typeof(TextBoxView), new FrameworkPropertyMetadata(new Thickness(CaretElement.BidiCaretIndicatorWidth, 0, CaretElement.BidiCaretIndicatorWidth, 0)));
}

(...)
// BiDi caret indicator width.
internal const double BidiCaretIndicatorWidth = 2.0;

enter image description here