TextBlock 与 TextBox 填充 - XAML WPF

Posted

技术标签:

【中文标题】TextBlock 与 TextBox 填充 - XAML WPF【英文标题】:TextBlock vs TextBox Padding - XAML WPF 【发布时间】:2018-11-13 18:03:53 【问题描述】:

我正在尝试在同一水平对齐上向文本块和文本框添加填充(因此两者的文本都从相同的水平位置开始),但在我看来,文本块与文本框的填充是关了吗?

我有这个代码:

<TextBox Text="Test"
             BorderThickness="0"
             Margin="0"
             Padding="12,0,0,0" />
<TextBlock Text="Test"
           Margin="0"
           Padding="12,0,0,0" />

但在我的显示器上,显示如下(Stackpanel):

网格:

基本上,我的问题是,填充是一样的,那么水平对齐是怎么回事?

【问题讨论】:

使用标签而不是 TextBlock 可能会更幸运,因为后者实际上没有内容。 【参考方案1】:

Padding 表示控件的边(可以是边距)与其内容之间的距离。

使用您的 Xaml,我使用了 Snoop 实用程序,发现文本框有更多的内部控制。例如边框,TextBoxView 等...参考下图。

但是,如果是 TextBlock,则没有。 Textbox控件中的控件之一是TextBoxView,查看它有2,0,2,0的边距。

我更改了 Margin = -1,0,0,0 并正确填充了内容。所以内容是对 textBoxView 的填充。并使 textBoxView 的 Margin 等于 -1,0,0,0。它看起来与 TextBlock 对齐是正确的。

【讨论】:

不能轻松修改XAML中TextBox内部TextBoxView的边距。 This answer 建议修改TextBox 的边距:Margin="-2 0 -2 0"。至少在我的情况下这是有效的。

以上是关于TextBlock 与 TextBox 填充 - XAML WPF的主要内容,如果未能解决你的问题,请参考以下文章

wpf <stackpanel> textblock和textbox啥意思

WPF 实现带标题的TextBox

C#/WPF高手进!ComboBox.ItemTemplate用TextBlock正常,用TextBox就报错!

C#/WPF高手进!ComboBox.ItemTemplate用TextBlock正常,用TextBox就报错!

WPF 之 TreeView节点重命名

MVVM DEVDataColumn中的TextBox与ComboBox的并存