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
无法正常工作。