XAML Triggers

I have a tagged control. And the IsLink logical dependency property ... So, if IsLink = true, I need to make the blue Foreground and Cursor as "Hand" as well.

I can do this with bindings, but in this case I need to write two converters (BoolToCursor and BoolToForeground), but I'm too lazy for that :)

So, I tried something like this:

<Label Name="lblContent" VerticalAlignment="Center" FontSize="14"> <Label.Style> <Style TargetType="Label"> <Style.Triggers> <Trigger SourceName="myControl" Property="IsLink" Value="True"> <!--Set properties here--> </Trigger> </Style.Triggers> </Style> </Label.Style> label text </Label> 

But this does not work ... Any ideas, gentlemen? :)

+6
source share
2 answers

Use a DataTrigger instead of a Normal Trigger. Check out the code below

Xaml

  <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <Label Name="lblContent" VerticalAlignment="Center" FontSize="14"> <Label.Style> <Style TargetType="Label"> <Style.Triggers> <DataTrigger Binding="{Binding Path=IsLink}" Value="True"> <Setter Property="Foreground" Value="Blue" /> <Setter Property="Cursor" Value="Hand" /> </DataTrigger> </Style.Triggers> </Style> </Label.Style> label text </Label> </Grid> </Window> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); this.DataContext = this; } public Boolean IsLink { get { return (Boolean)GetValue(IsLinkProperty); } set { SetValue(IsLinkProperty, value); } } public static readonly DependencyProperty IsLinkProperty = DependencyProperty.Register("IsLink", typeof(Boolean), typeof(MainWindow), new UIPropertyMetadata(false)); } 
+8
source
 <CheckBox x:Name="IsLink">IsLink</CheckBox> <Label Name="lblContent" VerticalAlignment="Center" FontSize="14"> <Label.Style> <Style> <Style.Triggers> <DataTrigger Binding="{Binding ElementName=IsLink, Path=IsChecked}" Value="true"> <Setter Property="Label.Foreground" Value="Blue" /> <Setter Property="Label.Cursor" Value="Hand" /> </DataTrigger> </Style.Triggers> </Style> </Label.Style> label text </Label> 
+2
source

Source: https://habr.com/ru/post/887712/


All Articles