思路
Grid标签里面创建Label和TextBox,这是一个整体。
TextBox 为空显示 Label OR TextBox 不为空隐藏 Label 。
注意
两个标签的前后顺序。
TextBox文本的背景颜色设置为透明,不然会无法看到 Label 内容。
ElementName=txtStoreName:指定TextBox 的 Name 元素名称
Path= Text.IsEmpty:检查该元素里面的IsEmpty属性是否为空(获取:True 或 False)
Converter={StaticResource booleanToVisibilityConverter}:由于Visibility是枚举值不是bool值因此需要进行转换
BooleanToVisibilityConverter 介绍
WPF绑定如果是同类型可以直接生效,如果不是同类型则要求有Converter,下述类型是内置的,顾名思义就是bool到Visibility的转换器,注意Visibility是枚举值,有3个值,不是bool,因此需要转换。
<Window x:Class="Wpf.MainWindow">
<Window.Resources>
<ResourceDictionary>
<BooleanToVisibilityConverter x:Key="booleanToVisibilityConverter"/>
</ResourceDictionary>
</Window.Resources>
<Grid>
<Grid Width="130" Height="30">
<Label Visibility="{Binding ElementName=txtStoreName, Path= Text.IsEmpty,Converter={StaticResource booleanToVisibilityConverter}}" Foreground="#AAAAAA">请输入…</Label>
<TextBox Name="txtStoreName" Background="Transparent" Width="120" Height="30"></TextBox>
</Grid>
</Grid>
</Window>
效果图: