改变行为的依赖属性

时间:2016-07-14 13:01:01

标签: wpf xaml

我有一个行为,我在其上创建了一个依赖项属性,此行为用于ListBox的项模板。 我需要做的是在选择ListBoxItem时更改依赖项属性中的值。 我试图在Xaml中给行为一个名字,但触发器没有识别它(编译错误)。 我尝试创建一个0大小的网格,在触发器中更改该网格的背景颜色,并将依赖属性绑定到该网格的背景,它取第一个值,但在触发器更改背景时没有更新

行为类:

public class DragToCenter : Behavior<FrameworkElement>
{
    public static readonly DependencyProperty CenteredTextColorProperty = DependencyProperty.Register(
        "CenteredTextColor",
        typeof(Color),
        typeof(DragToCenter),
        new UIPropertyMetadata(Brushes.Black.Color, CenteredTextColorPropertyChanged));

    private static void CenteredTextColorPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        DragToCenter lBase = d as DragToCenter;
        if (lBase != null)
        {
            d.SetValue(CenteredTextColorProperty, e.NewValue);
            lBase.DrowImage();
        }
    }

    public Color CenteredTextColor
    {
        get
        {
            return (Color)GetValue(CenteredTextColorProperty);
        }
        set
        {
            SetValue(CenteredTextColorProperty, value);
        }
    }

    protected override void OnAttached()
    {
            // Do something
    }

    private void DrowImage()
    {
            // Do something that changes the view so it will be visible if this is triggered
    }

XAML:

<ListBox ItemsSource="{Binding DisplayValues}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <Grid x:Name="CenterText" Height="0" Width="0" Background="Gray"/>
                        <Border>
                                <i:Interaction.Behaviors>
                                        <b:DragToCenter CenteredTextColor="{Binding ElementName=CenterText, Path=Background.Color}"/>
                                </i:Interaction.Behaviors>
                        </Border>
                        <DataTemplate.Triggers>
                            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}, Path=IsSelected}" Value="True">
                          <Setter TargetName="CenterText" Property="Background" Value="White"/>
                            </DataTrigger>
                        </DataTemplate.Triggers>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

编辑:

想法是在ListBox中选择行

时更改行为功能(一个小的更改)

0 个答案:

没有答案