【发布时间】:2012-01-31 06:33:08
【问题描述】:
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- 附加属性的初始值;当控件初始化时,Setters 触发了一次。对该属性的后续更改并未触发 DataTrigger。 - Visual Studio 输出窗口未显示绑定表达式警告。
【问题讨论】:
-
PART_Content是否在<Tag>定义中定义了前景色?如果是这样,该值将覆盖任何触发值 -
@Rachel- 不,不是,但谢谢。
标签: c# wpf data-binding