2010-08-18 75 views
1

我有一个非常简单的UserControl,如下所示。我试图让Label元素的背景随着控件中的属性改变而改变,但它不起作用:当我改变控件实例的Selected属性时,标签的背景颜色不会改变。WPF使用DependencyProperty改变UserControl内的标签背景

谢谢!背后

代码:

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> 

回答

1

只是给用户控件名称来执行这个代码,这里IAM使用测试。 如果您正在使用的用户控件依赖属性,你可以通过ElementName属性访问属性,或者你必须设置的DataContext像name.DataContext元素=这个..

<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

请查看更新的答案 – 2010-08-18 10:16:37

+0

基肖尔 - 谢谢,最近的更新工作。 – 2010-08-18 10:42:44