0
如何讓WPF TextBox充當緊湊形式?
這意味着TextBox內的「標籤文本」隱藏在點擊或有「真實文本」時。
See working prototype如何使WPF TextBox充當緊湊形式?
如何讓WPF TextBox充當緊湊形式?
這意味着TextBox內的「標籤文本」隱藏在點擊或有「真實文本」時。
See working prototype如何使WPF TextBox充當緊湊形式?
您可以在TextBox的樣式中使用數據觸發器,並將背景設置爲包含文本的內容。一個簡單的作品將是這樣的:
<TextBox>
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding Text, RelativeSource={RelativeSource Self}}" Value="">
<Setter Property="Background">
<Setter.Value>
<VisualBrush Stretch="None" AlignmentX="Left">
<VisualBrush.Visual>
<TextBlock Text="This is the label text" Foreground="Silver" />
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
測試在Kaxaml; 「標籤文本」對齊方式並不完全正確,您可能想將其重構爲更適合生產代碼的東西。
編輯:爲了掩蓋「隱藏焦點」情景,您需要更復雜的觸發器。這種替換datatrigger:
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Text, RelativeSource={RelativeSource Self}}" Value="" />
<Condition Binding="{Binding IsKeyboardFocused, RelativeSource={RelativeSource Self}}" Value="False" />
</MultiDataTrigger.Conditions>
<Setter Property="Background">
<Setter.Value>
<VisualBrush Stretch="None" AlignmentX="Left">
<VisualBrush.Visual>
<TextBlock Text="This is the label text" Foreground="Silver" />
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
</MultiDataTrigger>
剛剛意識到我沒有掩蓋「隱藏焦點」的行爲......如果有機會,我會更新它。 – 2010-10-13 07:38:15
我找到[Exteded WPF工具包]一些有用的東西(http://wpftoolkit.codeplex.com/) - [WatermarkTextBox](http://wpftoolkit.codeplex.com/wikipage ?title = WatermarkTextBox) – giperon 2011-03-29 17:04:12