trigger c# wpf xaml datatrigger

c# - ¿Cómo puedo alternar la visibilidad de un TextBlock en un DataTrigger?



wpf button triggers (2)

Este código funciona (cuando ControlType = "dropDown" luego el fondo amarillo ):

<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>

Pero este código no funciona (cuando ControlType = "dropDown", el TextBlock sigue siendo 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>

¿Por qué no puedo establecer la visibilidad en un estilo como puedo fondo?


Está configurando Visibility en el TextBlock y luego intenta anularlo con un estilo. Eso no funcionará Prueba esto:

<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>


Tengo el mismo problema. ¡La respuesta de @ Bryan es perfecta! Hay versiones equivocadas y correctas. La versión incorrecta:

<TextBlock Text="1999-09-09 16:08" VerticalAlignment="Top" Visibility="Collapsed"> <TextBlock.Style> <Style BasedOn="{StaticResource TipTextYellow}" TargetType="TextBlock"> <Style.Triggers> <DataTrigger Binding="{Binding ElementName=Alcohol,Path=IsFocused}" Value="True"> <Setter Property="Visibility" Value="Visible"/> </DataTrigger> </Style.Triggers> </Style> </TextBlock.Style> </TextBlock>

La versión correcta:

<TextBlock Text="1999-09-09 16:08" VerticalAlignment="Top"> <TextBlock.Style> <Style BasedOn="{StaticResource TipTextYellow}" TargetType="TextBlock"> <Setter Property="Visibility" Value="Collapsed"/> <Style.Triggers> <DataTrigger Binding="{Binding ElementName=Alcohol,Path=IsFocused}" Value="True"> <Setter Property="Visibility" Value="Visible"/> </DataTrigger> </Style.Triggers> </Style> </TextBlock.Style> </TextBlock>