2011-05-10 13 views
6

Tengo un control con etiqueta ... Y una propiedad de dependencia booleana "IsLink" ... Entonces, si IsLink = true, necesito hacer que el primer plano y el cursor azules también sean "Mano" ..Disparadores en XAML

puedo hacerlo con los enlaces, pero en este caso tengo que escribir dos convertidores (BoolToCursor y BoolToForeground), pero soy demasiado perezoso para eso :)

lo tanto, he tryed smth así:

<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's text 
</Label> 

Pero no funciona ... ¿Alguna idea, caballeros? :)

Respuesta

8

Utilice un DataTrigger en lugar de Normal Trigger.Check el código de abajo

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's 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)); 


    } 
+0

Muchas gracias! Pero una pregunta más similar, si tengo dos etiquetas y me gustaría esconder una etiqueta si el contenido de otra persona es nulo, lo intenté así pero no funcionó –

2
<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's text 
</Label>