当文本框为空或空时,如何在文本框中设置提示文本(提示横幅),如果它不为空或为空则禁用?

时间:2016-11-30 18:39:21

标签: c# wpf xaml

我是xaml的新手,不知道数据绑定是如何工作的。我的文本框为空时,我尝试启用提示文本。但我不确定数据绑定是如何工作的,当它不为空时禁用它。

这是我发现的一个解决方案,用于获取我的提示文本。如果我的名字文本框有值,这段代码如何禁用它?

<TextBox Grid.Row="1">
    <TextBox.Style>
        <Style TargetType="TextBox" xmlns:sys="clr-namespace:System;assembly=mscorlib">
            <Style.Resources>
                <VisualBrush x:Key="CueBannerBrush" AlignmentX="Left" AlignmentY="Center" Stretch="None">
                    <VisualBrush.Visual>
                        <Label Content="First Name" Foreground="LightGray" />
                    </VisualBrush.Visual>
                </VisualBrush>
            </Style.Resources>
            <Style.Triggers>
                <Trigger Property="Text" Value="{x:Static sys:String.Empty}">
                    <Setter Property="Background" Value="{StaticResource CueBannerBrush}" />
                </Trigger>
                <Trigger Property="Text" Value="{x:Null}"> 
                    <Setter Property="Background" Value="{StaticResource CueBannerBrush}" />
                </Trigger>
                <Trigger Property="IsKeyboardFocused" Value="True">
                    <Setter Property="Background" Value="White" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>

    <TextBox.Template>
        <ControlTemplate>
            <TextBox Text="{Binding SelectedItem.FirstName,UpdateSourceTrigger=PropertyChanged}"/>
        </ControlTemplate>
    </TextBox.Template>
</TextBox>

1 个答案:

答案 0 :(得分:0)

没关系,我想通了。

我可以将文本框绑定设置为:

<TextBox Text="{Binding SelectedItem.FirstName,
                        UpdateSourceTrigger=PropertyChanged}"
         Grid.Row="1">

如果您有一个开始和结束的<textbox></textbox>标签,我不知道您可以这样做。

我认为只有在textbox有一个自动结束标记(<textbox />)时才能这样做。

抱歉这个愚蠢的问题。