WPF изменяет фон метки в UserControl, используя DependencyProperty - PullRequest
1 голос
/ 18 августа 2010

У меня очень простой UserControl, как показано ниже. Я пытаюсь заставить фон элемента Label изменяться всякий раз, когда изменяется свойство в элементе управления, но это не работает: когда я изменяю свойство Selected в экземпляре элемента управления, цвет фона метки не изменяется.

Спасибо!

Код:

    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 Ответ

1 голос
/ 18 августа 2010

просто дайте имя UserControl для выполнения этого кода, здесь я использую test.Если вы используете свойство Dependency в usercontrol, вы можете получить доступ к свойству либо с помощью свойства ElementName, либо вам нужно установить Datacontext для элемента, например name.DataContext = this ..

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