1

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

4

1 回答 1

3

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

您可以使用由您在装饰层中使用的 TextBlock 组成的 VisualBrush(此技术不会使用装饰层)。然后将该 VisualBrush 应用到 TextBox 的背景。这会将文本准确地定位在您的 TextBox 中。当然,这种技术在 TextBox 为空时最有用,因此只有 VisualBrush 的 TextBlock 中的文本可见(而不是 TextBox 中的任何其他文本也可见)。

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

使用 VisualBrush 显示的提示文本

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

于 2012-12-21T18:32:18.750 回答