C# 在纯XAML中创建WPF水印

C# 在纯XAML中创建WPF水印,c#,wpf,xaml,C#,Wpf,Xaml,这适用于登录屏幕上的TextBox控件,其中TextBox包含用户名。我希望文本框按以下方式执行: 当内容为空时,内容应设置为“用户名” 单击文本框时,我希望将内容设置为 ”“也就是说;无内容(除非内容已由用户编辑) 现在这是一个相当标准的特性,类似这样(在页面顶部)。恐怕没有比这更好的例子了:) 因此,无论如何,我已经使用ViewModel完成了这项工作,它工作得很好,但我想知道是否可以纯粹从XAML端完成这项工作。不考虑任何业务逻辑,因此我认为最好不要使用虚拟机。查找以下示例可以帮助您找

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

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

  • 单击文本框时,我希望将内容设置为 ”“也就是说;无内容(除非内容已由用户编辑)

现在这是一个相当标准的特性,类似这样(在页面顶部)。恐怕没有比这更好的例子了:)


因此,无论如何,我已经使用ViewModel完成了这项工作,它工作得很好,但我想知道是否可以纯粹从XAML端完成这项工作。不考虑任何业务逻辑,因此我认为最好不要使用虚拟机。

查找以下示例可以帮助您找到解决方法

有一个可以满足您在纯XAML中要求的功能。还有其他的图书馆

使用扩展WPF工具包的好处是,您可以在Nuget上获取它,并直接通过Visual Studio安装和安装更新。

Pure 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>


摘自:

可能重复的您是否尝试过搜索internet?这篇stackoverflow帖子(在我的bing结果中的第一篇)似乎对@Robaticus有帮助:这些答案只显示在代码逻辑中,我希望能够用纯XAML实现这一点。我怀疑你能否用“纯XAML”实现这一点。此外,在给出的示例中,唯一的代码是可见性转换器。没有业务逻辑或视图模型。