个人技术分享

思路

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>

效果图: