如果文本框沒有鍵盤焦點並且沒有文本,則顯示斜體灰色的「在此輸入」文本「內部」。怎麼樣?什麼不起作用:如何在WPF文本框中添加「輸入此處」消息?
- 設置
Text
屬性 - 它弄亂數據綁定。 - 覆蓋模板 - 無論如何,它已經變得混亂和覆蓋。
最好,我希望解決方案儘可能多的XAML和儘可能少的C#。也許我可以創建一個附加的屬性來做一些魔術?
如果文本框沒有鍵盤焦點並且沒有文本,則顯示斜體灰色的「在此輸入」文本「內部」。怎麼樣?什麼不起作用:如何在WPF文本框中添加「輸入此處」消息?
Text
屬性 - 它弄亂數據綁定。最好,我希望解決方案儘可能多的XAML和儘可能少的C#。也許我可以創建一個附加的屬性來做一些魔術?
您要找的是什麼被稱爲水印。我不熟悉WPF,但在「google」上搜索WPF & Watermark會返回大量結果。
不是乾淨的解決方案,但你可以隨時添加一個TextBlock
覆蓋的TextBox
和改變它的Visible
財產時TextBox
獲得或失去焦點。
討厭的黑客,但有點創新?我可以得到布朗尼分嗎? ;-)
我到目前爲止看到的最佳解決方案是來自Kevin的WPF Bag-o-Tricks library的InfoTextBox。一探究竟。
爲您的TextBox創建樣式。這是向您的TextBox添加「水印」的最簡單方法之一。該代碼創建一個簡單的樣式並將其綁定到TextBox。
<Window.Resources>
<Style x:Key="MyWaterMarkStyle" TargetType="{x:Type TextBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Grid>
<Border Background="White" BorderBrush="#FF7D8683" BorderThickness="1"/>
<ScrollViewer x:Name="PART_ContentHost" Margin="5,0,0,0" VerticalAlignment="Center" />
<Label Margin="5,0,0,0" x:Name="WaterMarkLabel" Content="{TemplateBinding Tag}" VerticalAlignment="Center"
Visibility="Collapsed" Foreground="Gray" FontFamily="Arial"/>
</Grid>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="Text" Value=""/>
</MultiTrigger.Conditions>
<Setter Property="Visibility" TargetName="WaterMarkLabel" Value="Visible"/>
</MultiTrigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="DimGray"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
...
<TextBox Style="{StaticResource MyWaterMarkStyle}" Height="25" Tag="Water mark"/>
我建議您使用Syncfusion爲WPF。 它包含支持水印和其他功能的SfTextBoxExt。
+1你的答案:)。水印文本在WPF/Silverlight/whatnot中非常流行,並且有數百種解決方案在那裏...... – Anvaka 2009-09-22 14:47:46