如何为TextBox定位装饰?

时间:2012-07-04 13:34:12

标签: c# wpf

我创建了包含TextBlock的装饰器。 此TextBlock与装饰的TextBox重叠。 问题是这些控件的文本起始位置不一样。 如何对齐TextBlock以实现文本位置的匹配?

1 个答案:

答案 0 :(得分:3)

除了调整装饰层中TextBlock边距的明显之外,还有另一种可能的方法。在不知道你的真正目标是什么的情况下(除了在TextBox上定位文本之外)很难说这是否会有所帮助,但是这里有。

你可以use a VisualBrush包含你在adorner图层中使用的TextBlock(这种技术使用adorner图层)。然后将VisualBrush应用于TextBox的背景。这会将文本准确定位在TextBox中。当然,当TextBox为空时,这种技术最有用,因此只有VisualBrush的TextBlock中的文本是可见的(而不是TextBox中的任何其他文本也可见)。

当TextBox为空时,我使用此技术显示“提示文本”(此处显示的是ErrorTemplate和提示文本的可能组合,但您明白了)。 “0到159”文本是VisualBrush中的一个TextBlock,它在Text属性为空时应用于TextBox的背景:

Hint Text shown using a VisualBrush

也许有关您的目标的更多信息,我们也可以建议其他方法。