想在WPF用户控件中添加水印文本作为属性?

时间:2013-11-11 06:52:28

标签: c# wpf user-controls watermark

我创建了一个WPF用户控件。该控件包含一个文本框和按钮。我希望在那个控制中有一个水印属性。

这将帮助用户将他们喜欢的内容添加为水印。喜欢WaterMark =“输入密码......”。

<wpfCtrl:PasswordBoxWin8 Background="CadetBlue" Margin="24,12,257,258" FontSize="26" />

如何在用户控件中添加水印作为属性?

Passwordbox user control download

2 个答案:

答案 0 :(得分:2)

看看这个水印

Watermark / hint text TextBox in WPF

基本上添加一个位于文本框上方的文本块,然后在您不再需要显示水印时隐藏它。

如果需要自定义文本,请创建依赖项属性并将其绑定到文本块的Text属性。这样,用户可以指定他们想要的任何文本。

public string WaterMark
{
  get { return (string )this.GetValue(WaterMarkProperty); }
  set { this.SetValue(WaterMarkProperty, value); } 
}
public static readonly DependencyProperty WaterMarkProperty = DependencyProperty.Register(
 "WaterMark", typeof(string ), typeof(PasswordBoxWin8));

然后在XAML

中绑定它
<TextBlock Text="{Binding WaterMark, ElementName=YourUserControlName}" />

这样,您的用户控件就有一个名为WaterMark的属性,您可以设置

答案 1 :(得分:0)

尝试为您的控件添加样式:

国土资源:

<SolidColorBrush x:Key="watermarkBackground" Color="White" />
<SolidColorBrush x:Key="watermarkForeground" Color="LightSteelBlue" />
<SolidColorBrush x:Key="watermarkBorder" Color="Indigo" />
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />

<Style x:Key="MyStyle" TargetType="Grid" >
    <Setter Property="HorizontalAlignment" Value="Stretch" />
    <Setter Property="VerticalAlignment" Value="Center" />
    <Setter Property="Margin" Value="20,0" />
</Style>

并且,这种风格在MainWindow.xaml中如何使用

<Grid Background="{StaticResource watermarkBackground}" Style="{StaticResource MyStyle}" >
    <TextBlock Text="Your water mark" 
               Foreground="{StaticResource watermarkForeground}"
               Visibility="{Binding ElementName=txtUserEntry, Path=Text.IsEmpty, Converter={StaticResource BooleanToVisibilityConverter}}" />
    <TextBox  Background="Transparent" BorderBrush="{StaticResource watermarkBorder}" />
</Grid>