【问题标题】:How to hide label until textbox information has been entered如何在输入文本框信息之前隐藏标签
【发布时间】:2019-07-16 14:45:48
【问题描述】:

我试图隐藏标签,直到用户在 texbox 中输入数字。然后我希望标签出现。我希望在不使用 C# 的情况下将这一切都包含在 XAML 中。

根据我在网上找到的内容,我尝试了不同类型的绑定。我想我一定很接近了,但还是有什么不对劲。

这是文本框代码:

<TreeViewItem Grid.Row="1" FontSize="12" Header="Width"/>
<TextBox Text="{Binding xcoord, UpdateSourceTrigger=PropertyChanged}" Name="x" Height="20" Width="40" Grid.Row="1" Grid.Column="2" />

这是标签代码:

<Label Foreground="SteelBlue" FontWeight="Bold" HorizontalAlignment="Center" VerticalContentAlignment="Center" Height="40" Background="Transparent" x:Name="label1"  FontSize="16" Width="160"  Content="{Binding Text, ElementName=x}" ContentStringFormat=" {0} mm" Canvas.Left="220" Canvas.Top="382" RenderTransformOrigin="1.045,-0.141" VerticalAlignment="Top">
                    <Label.Style>
                        <Style TargetType="Label">
                            <Setter Property="Visibility" Value="Hidden" />
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding Text.Length, ElementName=x, UpdateSourceTrigger=PropertyChanged}" Value="True">
                                    <Setter Property="Visibility" Value="Visible"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Label.Style>

                </Label>

基本上我尝试过的任何东西都不会在屏幕上显示标签。

【问题讨论】:

  • 我认为您的错误是试图在 XAML 中完成所有操作。 ViewModel 是这种逻辑应该存在的地方(当它对表单的内容感到满意时,它会设置一个布尔字段,您的标签可以将其 Visible 属性绑定到该字段)。
  • DataTrigger 没有意义。您正在绑定到 Text.Length 并希望在值“True”时触发?您应该在视图模型中使用“IsLabelVisible”或其他内容创建一个属性,然后检查 TextBox 的支持属性是否为 Length >0。

标签: c# wpf xaml


【解决方案1】:

类似的东西可能会起作用 - 如果 texbox 文本为空,将隐藏标签

<TextBox x:Name "tb1"/>
<Label Foreground="SteelBlue" FontWeight="Bold" HorizontalAlignment="Center" VerticalContentAlignment="Center" Height="40" Background="Transparent" x:Name="label1"  FontSize="16" Width="160"  Content="{Binding Text, ElementName=x}" ContentStringFormat=" {0} mm" Canvas.Left="220" Canvas.Top="382" RenderTransformOrigin="1.045,-0.141" VerticalAlignment="Top">
    <Label.Style>
        <Style TargetType="Label">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Text, ElementName=tb1}" Value="">
                    <Setter Property="Visibility" Value="Hidden" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Label.Style>
</Label>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 2010-12-13
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多