2010-08-18 7 views
1

J'ai un UserControl très simple comme indiqué ci-dessous. J'essaie de modifier l'arrière-plan de l'élément Label chaque fois qu'une propriété du contrôle change, mais cela ne fonctionne pas: lorsque je modifie la propriété Selected sur l'instance de contrôle, la couleur d'arrière-plan de l'étiquette ne change pas.Modification de WPF Arrière-plan d'une étiquette dans UserControl à l'aide de DependencyProperty

Merci!

code derrière:

public static readonly DependencyProperty SelectedProperty = 
      DependencyProperty.Register("Selected", 
      typeof(bool), 
      typeof(UICatcherContactlistItem), 
      new FrameworkPropertyMetadata((bool)false)); 

    public bool Selected 
    { 
     get { return (bool)GetValue(SelectedProperty); } 
     set { SetValue(SelectedProperty, value); } 
    } 

Xaml:

<UserControl x:Class="UICatcherContactlistItem" [....]> 
    <Label Name="name" Foreground="#888888"> 
     <Style TargetType="{x:Type Label}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Selected}" Value="True"> 
        <Setter Property="Background" Value="Red"/> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Selected}" Value="False"> 
        <Setter Property="Background" Value="Blue"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Label>  
</UserControl> 

Répondre

1

juste donner le nom UserControl pour exécuter ce code, ici Iam en utilisant le test. Si vous utilisez la propriété de dépendance sur le usercontrol vous pouvez accéder à la propriété soit la propriété ElementName ou vous devez régler le DataContext pour l'élément comme name.DataContext = .. ce

<Label Name="name" Foreground="#888888" Content="text" Height="100" HorizontalAlignment="Stretch" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" > 
     <Label.Style> 

     <Style TargetType="{x:Type Label}"> 
      <!--<Setter Property="Background" Value="Yellow"/>--> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Selected,ElementName=test}" Value="True"> 
        <Setter Property="Background" Value="Red"/> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Selected,ElementName=test}" Value="False"> 
        <Setter Property="Background" Value="Blue"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
     </Label.Style> 
    </Label> 
+0

pls voir la réponse mise à jour –

+0

Kishore - merci, la dernière mise à jour a fonctionné. –