我正在尝试根据元素的AttachedProperty值更改DataTemplate中的background属性, 我没有得到任何绑定错误,但背景字段保持其默认值。 什么是蠢事?
查看:
<ContentControl common:IsOpen={Binding IsOpenValue} ContentTemplate="{StaticResource MyTemplate}"/>
的DataTemplate:
<DataTemplate x:Key="MyTemplate">
<Border Width="20" Height="20" Name="TheName"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding (common:IsOpen), RelativeSource={RelativeSource Self}}" Value=common:IsOpenEnum.Open>
<Setter Property="Background" TargetName="TheName" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding (common:IsOpen), RelativeSource={RelativeSource Self}}" Value=common:IsOpenEnum.Closed>
<Setter Property="Background" TargetName="TheName" Value="Green"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
答案 0 :(得分:1)
这里有几个问题:
绑定到附加属性时必须使用完整语法。类似的东西:
<DataTrigger Binding="{Binding Path=(common:IsOpen), Rela....
接下来,当您在RelativeSource={RelativeSource Self}
上实际查找该属性时,使用ContentPresenter
可能会为您提供ContentControl
控件模板中的ContentControl
。相反,使用
....RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContentControl}}...
最后,为简洁起见,请从值中删除common:IsOpenEnum.
。只使用枚举的值:
....Value="Open">
[我认为缺少这个值的引用是一个小故障,它们确实出现在实际代码中]