2012-01-31 87 views
0

我试图根据元素的AttachedProperty值更改DataTemplate中的背景属性, 我没有收到任何绑定错误,但背景字段保留其默认值。 什么是prorblem?DataTrigger根据AttachedProperty值更改

查看:

<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> 

回答

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"> 

[我相信没有报价为值是毛刺这里,他们会出现在真正的代码]

+0

感谢。有效 – ie1 2012-02-14 07:38:07