代码之家  ›  专栏  ›  技术社区  ›  Russ

如何使用触发器使文本框可见性=隐藏

  •  12
  • Russ  · 技术社区  · 16 年前

    我今天似乎过得很艰难。我只想做一个 TextBox

    <TextBlock Grid.Column="2" Text="This order will be sent to accounting for approval" 
               Foreground="Red" VerticalAlignment="Center" FontWeight="Bold" Padding="5">
        <TextBlock.Style>
            <Style>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Path=AllowedToSubmit}" Value="True">
                        <Setter Property="Visibility" Value="Hidden" /> 
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
    </TextBlock>
    
    2 回复  |  直到 13 年前
        1
  •  23
  •   Robert Macnee    16 年前

    你需要设置 Style.TargetType 为了让它认识到 Visibility

    <TextBlock Grid.Column="2" VerticalAlignment="Center" FontWeight="Bold" Foreground="Red" Padding="5" Text="This order will be sent to accounting for approval">
        <TextBlock.Style>
            <Style TargetType="{x:Type TextBlock}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Path=AllowedToSubmit}" Value="True">
                        <Setter Property="Visibility" Value="Hidden"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
    </TextBlock>
    

    您的绑定路径 AllowedToSubmit 可能需要 ElementName 开始 Window 还有他的名字。

        2
  •  8
  •   Andy    16 年前

    另一种选择是绑定 TextBlock.Visibility 直接向物业:

    <Window>
        <Window.Resources>
            <BooleanToVisibilityConverter x:Key="BoolToVisibility" />
        </Window.Resources>
        <TextBlock Visibility="{Binding Path=AllowedToSubmit, Converter={StaticResource BoolToVisibility}}" />
    </Window>
    

    TextBlock ,然后您可以编写自己的转换器,与内置的相反 BooleanToVisibilityConverter .