在Pure XAML中创建WPF水印

时间:2012-05-21 14:52:08

标签: c# wpf xaml

这适用于登录屏幕上的TextBox控件,其中TextBox包含用户名。我希望TextBox以下列方式执行:

  • 当内容为空时,内容应设置为“用户名”。

  • 单击TextBox时,我希望将内容设置为 “”,即没有(除非内容已由用户编辑)。

这是一个非常标准的功能,如今wordpress login(在页面顶部)。 没想到比这更好的例子我害怕:)

所以,无论如何,我已经使用ViewModel完成了这项工作并且运行良好,但我想知道是否可以完全来自XAML结束。没有业务逻辑,所以我认为没有VM就可以做得更好。

4 个答案:

答案 0 :(得分:6)

答案 1 :(得分:1)

你试过上网吗?这个stackoverflow帖子(我的bing结果中的第一个)似乎会有所帮助 Watermark / hint text / placeholder TextBox in WPF

答案 2 :(得分:1)

Extended WPF Toolkit有一个Watermark Textbox,可以满足您在纯XAML中的要求。还有其他图书馆。

使用Extended WPF Toolkit的好处是你可以在Nuget上获取它并直接通过Visual Studio安装和安装更新。

答案 3 :(得分:0)

纯XAML:

<Grid>
    <TextBox  Width="250"  VerticalAlignment="Center" HorizontalAlignment="Left" x:Name="SearchTermTextBox" Margin="5"/>
    <TextBlock IsHitTestVisible="False" Text="Enter Search Term Here" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="10,0,0,0" Foreground="DarkGray">
        <TextBlock.Style>
            <Style TargetType="{x:Type TextBlock}">
                <Setter Property="Visibility" Value="Collapsed"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Text, ElementName=SearchTermTextBox}" Value="">
                        <Setter Property="Visibility" Value="Visible"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
    </TextBlock>
</Grid>

来自:https://stackoverflow.com/a/21672408/4423545