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