Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I toggle a TextBlock's visibility in a DataTrigger?

This code works (when ControlType="dropDown" then the background yellow):

<Window x:Class="TestCollapsed.Views.MainView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:c="clr-namespace:TestCollapsed.Commands"
    Title="Main Window" Height="400" Width="800">
    <Window.Resources>
        <Style x:Key="DropDownStyle" TargetType="TextBlock">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ControlType}" Value="dropDown">
                    <Setter Property="Background" Value="Yellow"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>

    <StackPanel>
        <TextBlock Visibility="Visible" 
                   Text="This is going to be the dropdown control."
                   Style="{StaticResource DropDownStyle}"/>
    </StackPanel>
</Window>

But this code does not work (when ControlType="dropDown" then the TextBlock is still invisible):

<Window x:Class="TestCollapsed.Views.MainView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:c="clr-namespace:TestCollapsed.Commands"
    Title="Main Window" Height="400" Width="800">
    <Window.Resources>
        <Style x:Key="DropDownStyle" TargetType="TextBlock">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ControlType}" Value="dropDown">
                    <Setter Property="Visibility" Value="Visible"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>

    <StackPanel>
        <TextBlock Visibility="Collapsed" 
                   Text="This is going to be the dropdown control."
                   Style="{StaticResource DropDownStyle}"/>
    </StackPanel>
</Window>

Why can't I set visibility in a style as I can background?

like image 464
Edward Tanguay Avatar asked Sep 14 '09 15:09

Edward Tanguay


1 Answers

You're setting the Visibility on the TextBlock and then trying to override it with a style. That won't work. Try this:

<Window x:Class="TestCollapsed.Views.MainView"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     xmlns:c="clr-namespace:TestCollapsed.Commands"     Title="Main Window" Height="400" Width="800">     <Window.Resources>         <Style x:Key="DropDownStyle" TargetType="TextBlock">             <Setter Property="Visibility" Value="Collapsed"/>             <Style.Triggers>                 <DataTrigger Binding="{Binding ControlType}" Value="dropDown">                     <Setter Property="Visibility" Value="Visible"/>                 </DataTrigger>             </Style.Triggers>         </Style>     </Window.Resources>      <StackPanel>         <TextBlock Text="This is going to be the dropdown control."                    Style="{StaticResource DropDownStyle}"/>     </StackPanel> </Window> 
like image 103
Bryan Anderson Avatar answered Nov 11 '22 15:11

Bryan Anderson