DataTrigger中存在ControlTemplate

<DataTrigger
    Binding="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},
              Path=(ui:TreeViewItemHeader.IsDragTarget)}"
    Value="True">
    <Setter TargetName="PART_Content" Property="Foreground" Value="Red" />
</DataTrigger>


绑定属性IsDragTarget是一个附加属性,该属性编码为自定义控件类:

public static readonly DependencyProperty IsDragTargetProperty = DependencyProperty.RegisterAttached
        ("IsDragTarget",
        typeof(bool),
        typeof(TreeViewItemHeader),
        new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));

public static void SetIsDragTarget(DependencyObject self, bool value)
{
    self.SetValue(IsDragTargetProperty, value);
}

public static bool GetIsDragTarget(DependencyObject self)
{
    return (bool)self.GetValue(IsDragTargetProperty);
}


可以描述在初始化控件时DataTrigger仅出现一次解析值的问题。更新属性值不会翻转DataTrigger。

故障排除执行:


空白的IValueConverter“返回值”已添加到绑定中; IValueConverter.Convert方法仅被调用一次。
执行了调试步骤,以验证附加属性值是否已更改。
DataTrigger.Value属性设置为False-附加属性的初始值;控件初始化后,设置员将触发一次。对该属性的后续更改未触发DataTrigger。
Visual Studio输出窗口不显示绑定表达式警告。

最佳答案

使用DataTrigger是否有严格要求?我已经通过切换到Trigger来工作了:

<Trigger Property="ui:TreeViewItemHeader.IsDragTarget" Value="True">
    <Setter TargetName="PART_Content" Property="Foreground" Value="Red" />
</Trigger>


不知道为什么DataTrigger无法正常工作。

10-07 14:37
查看更多