2012-07-04 33 views
1

我創建了包含TextBlock的adorner。 此TextBlock重疊裝飾的文本框。 問題是,這些控件的文本的起始位置並不相同。 如何對齊TextBlock以實現文本位置的匹配?如何定位TextBox的裝飾者?

回答

3

除了明顯調整裝飾圖層中TextBlock的邊距之外,還有另一種想到的方法。不知道你真正的目標是什麼(除了在文本框上定位文本)它很難說如果這會有所幫助,但是在這裏。

您可能use a VisualBrush由您在裝飾層中使用的TextBlock組成(此技術將而不是使用裝飾層)。然後將該VisualBrush應用於TextBox的背景。這會將文本完全放置在您的文本框中。當然,當TextBox爲空時,這種技術非常有用,因此只有VisualBrush的TextBlock中的文本可見(而不需要TextBox中的任何其他文本也可見)。

我已經使用這種技術來顯示「提示文本」,當一個文本框是空的(這裏顯示一個可能的錯誤模板和提示文本的可疑組合,但你得到的想法)。在「0〜159」的文本是在VisualBrush一個TextBlock是被應用到文本框的背景時,其Text屬性爲空:

Hint Text shown using a VisualBrush

也許與你的目標更多的信息,我們可以建議其他方法,以及。

+0

是的,提示文字是目標。我考慮過VisualBrush,但由於綁定而改變TextProperty是不可接受的。 –

+1

@voroninp我不知道我明白。使用'VisualBrush'技術可以將提示文本放入一個'Brush'中,該''Brush'應用於'TextBox'的** background **屬性,所以不會混淆實際的'TextBox.TextProperty'。正因爲如此,當我用這種技術綁定'TextBoxes'時,它的工作很好。那有意義嗎? –

+0

謝謝。現在我明白你的意思了。這裏的問題是,視覺樣式與TextBox中文本的樣式不一樣。文字對齊可以不同,字體的大小等等。我希望您同意,在第一個字母處看到閃爍的光標更令人高興。如果用戶只是鍵入相同的文本作爲提示文本不移動它只會改變它的顏色。我知道這是一種完美主義=) –