我已經開始學習 WPF,我的第一個任務是探索最基本的控制元件,例如文本框。它引起了我的注意,因為在 WPF 中一切都更加可定制和強大,但它引起了我的注意,默認文本框的設計與 Winforms 的設計有何不同,獲得了相當丑陋的設計。
在下圖中,我們看到一個帶有所選文本的文本框。一個帶有 Winforms 的文本框和一個帶有 WPF 的文本框。

正如您所看到的,在 Winforms 中,選擇的上下突出顯示空間(以紫色突出顯示)分布均勻,而在 WPF 中,上部要大得多,當文本被選中時,文本框的外觀相當“難看”。
編輯:似乎有些用戶沒有正確解決問題。所以我去添加 WPF 文本框的 xaml 是下一個:
<TextBox HorizontalAlignment="Left" Margin="183,172,0,0" Text="TextBox" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
當我將屬性更改為VerticalAlignment="Center"issue 時,問題已解決,直到您更改使問題再次出現的 FontSize。問題是我的字體大小是 16px。
我想知道是否有任何方法可以修復這種視覺錯位,因為我真的不明白為什么他們在文本選擇的頂部留下了如此多的空間。
uj5u.com熱心網友回復:
要居中內容,在本例中為文本,您可以使用VerticalContentAlignment.
<TextBox VerticalContentAlignment="Center"... />
如果您設定了該Height屬性,請嘗試將其洗掉。這會以某種方式影響對齊。如果您更改FrontSize,則會出現類似的問題。
在默認情況ControlTemplate下TextBox,文本顯示為ScrollViewer。該ScrollViewer具有影響文本如何displayed.You'd性質必須寫一個Style影響它。這是我可以進一步試驗的一種風格:
<Style TargetType="TextBox">
<Setter Property="Height" Value="20"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border Background="Red"
BorderBrush="Black"
BorderThickness="2"
CornerRadius="2">
<ScrollViewer HorizontalAlignment="Center"
VerticalAlignment="Center"
VerticalScrollBarVisibility="Auto">
Hello Hello
</ScrollViewer>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
uj5u.com熱心網友回復:
您可以通過Padding如下設定屬性來調整內部填充。
<TextBox Padding="0,-2,0,0" ClipToBounds="True" ... />
或者,如果您不介意影響多行之間的間距,您可以通過設定內部文本的行高來降低字體抓地力和填充之間的空間。
<TextBox Padding="2" FontSize="16"
TextBlock.LineHeight="18" TextBlock.LineStackingStrategy="BlockLineHeight" ... />
編輯:回應 OP 的評論
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/393077.html
下一篇:在派生控制元件中隱藏基類依賴屬性
