如果文本框没有键盘焦点且没有文本,则在其中显示斜体灰色“在此处输入”文本。怎么样?什么行不通:
Text
属性 - 它会混淆数据绑定。最好,我希望解决方案尽可能多的XAML和尽可能少的C#。也许我可以创建一个会产生魔力的附属物?
答案 0 :(得分:4)
您正在寻找的是水印。我对WPF不熟悉,但在“google”上搜索WPF & Watermark会返回大量结果。
答案 1 :(得分:1)
我见过的最好的解决方案是来自Kevin的WPF Bag-o-Tricks library的 InfoTextBox 。看看吧。
答案 2 :(得分:1)
为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"/>
答案 3 :(得分:0)
不是最干净的解决方案,但您可以随时添加TextBlock
覆盖TextBox
,并在Visible
获得或失去焦点时更改TextBox
属性。
讨厌的黑客,但有点创新?我能获得布朗尼积分吗? ; - )
答案 4 :(得分:0)
我建议你使用Syncfusion for WPF。 它包含支持水印和其他功能的SfTextBoxExt。