2014-10-30 65 views
2

我有簡單的例子和​​使用TemplatedParent的數據綁定不起作用。有誰知道什麼是錯的?DataTrigger從交互不工作Windows Phone

<Button Background="Red" Content="xD"> 
     <Button.Template> 
      <ControlTemplate TargetType="Button"> 
       <Border> 
        <i:Interaction.Triggers> 
         <ec:DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=Background}" Value="Red"> 
          <ec:ChangePropertyAction PropertyName="Background" Value="CadetBlue"/> 
         </ec:DataTrigger> 
        </i:Interaction.Triggers> 
       </Border> 
      </ControlTemplate> 
     </Button.Template> 
    </Button> 

輸出中沒有錯誤。背景應該設置爲CadetBlue,但不應用任何效果。

+0

你可以更詳細說明它是如何不工作? *** Output ***窗口中的任何異常或通知錯誤? – 2014-10-30 18:14:25

+0

我認爲'TemplatedParent'模式只能用於'ControlTemplate',在這種情況下它用於'Border'。 – 2014-10-30 18:19:24

+0

它工作不正常。 – Maximus 2014-10-30 18:20:55

回答

1

看起來RelativeSource.TemplatedParent可以在模板內正常工作,但觸發器無法按預期工作:如果觸發條件與最初匹配,則觸發器/操作不會觸發。如果以編程方式更改綁定屬性,觸發器將觸發。這就是爲什麼它與IsPressed一起工作:按鈕沒有開始按下;它被加載後被按下。

如果相應地移動觸發出來的模板,並直接連到按鈕,調整綁定,一切都應該只是工作:

<Button x:Name="_button" 
     Background="Red" 
     Content="xD"> 
    <i:Interaction.Triggers> 
    <ei:DataTrigger Binding="{Binding ElementName=_button, Path=Background.Color}" 
        Value="Red"> 
     <ei:ChangePropertyAction PropertyName="Background" 
           Value="CadetBlue" /> 
    </ei:DataTrigger> 
    </i:Interaction.Triggers> 
    <Button.Template> 
    <ControlTemplate TargetType="Button"> 
     <Border Background="{TemplateBinding Background}"> 
     <ContentPresenter /> 
     </Border> 
    </ControlTemplate> 
    </Button.Template> 
</Button> 

注後臺觸發必須綁定到Background.Color;它不起作用,如果你綁定到畫筆本身,可能是因爲SolidColorBrush不覆蓋Equals

+0

這應該如何幫助我?它沒有效果。看起來DataTrigger無法訪問TemplatedParent,或者如果它不能更改元素,在這種情況下是邊框。 – Maximus 2014-10-30 19:16:02

+0

如果不在模板中引用它,則根本不會看到背景。如果您無法解析'TemplatedParent',則直接在'Button'下移動'i:Interaction.Triggers',而不是在模板中。 – 2014-10-30 19:21:26

+0

我不想看到它,但要閱讀它並基於它的價值做一些動作。我粘貼了簡單的示例,但通常我想讀取IsEnabled屬性的實例並在模板中執行一些操作。主要擔心的是我無法使用交互訪問父級模板。 – Maximus 2014-10-30 19:26:24