2011-05-10 12 views
6

में ट्रिगर्स मेरे पास लेबल के साथ नियंत्रण है .. और एक बूलियन निर्भरता संपत्ति "इस्लिंक" ... इसलिए, यदि IsLink = true है, तो मुझे नीली फोरग्राउंड और कर्सर को "हाथ" के रूप में भी बनाना होगा ..एक्सएएमएल

मैं बाइंडिंग के साथ कर सकते हैं, लेकिन इस मामले में मैं दो कन्वर्टर्स (BoolToCursor और BoolToForeground) लिखने की ज़रूरत है, लेकिन मुझे लगता है कि के लिए भी आलसी हूँ :)

तो, मैं उस तरह ख़ाली tryed है:

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

लेकिन यह काम नहीं करता ... कोई विचार, gentlemens? :)

उत्तर

8

नीचे

कोड 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

धन्यवाद एक बहुत उपयोग एक DataTrigger बजाय सामान्य Trigger.Check की! लेकिन एक और समान प्रश्न, यदि मेरे पास दो लेबल हैं और यदि कोई अन्य सामग्री शून्य है, तो मैं एक लेबल को छिपाना चाहता हूं, मैंने ऐसा करने की कोशिश की है लेकिन यह काम नहीं कर रहा है –

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> 
संबंधित मुद्दे