2013-01-10 21 views
1

我只是想學習DataTriggers。這個簡單的代碼有什麼問題?它告訴我「Source」不是FrameworkElement的一個屬性。WPF:最簡單的DataTriggers

<Image> 
    <Image.Triggers> 
     <DataTrigger Binding="{Binding Status}" Value="Sent"> 
      <Setter Property="Source" Value="Resources\Approve_64_Trans.bmp"/> 
     </DataTrigger> 

     <DataTrigger Binding="{Binding Status}" Value="SendFailed"> 
      <Setter Property="Source" Value="Resources\Cancel_64_Trans.bmp"/> 
     </DataTrigger> 
    </Image.Triggers> 
</Image> 

此外,有正確的使用值「SendFailed」或「已發送」的時候,狀態字段是枚舉類型和SendFailed,並且派出兩個有效的枚舉值?

+0

作爲在WPF相對較新的,我真的不能決定哪些克里斯和狒狒的答案是技術上的優勢。我真的希望我可以將它們都標記爲答案,但基於事實,狒狒的答案不需要任何額外的名稱空間和引用(您需要添加對System.Windows.Interactivity的引用來使用克里斯的答案),我會標記爲答案。謝謝你們。 我也驗證了你可以直接在DataTrigger的Value中使用枚舉成員。 – dotNET

回答

2

你需要把那種觸發的風格,像這樣:

<Image> 
    <Image.Style> 
     <Style TargetType="Image"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Status}" Value="Sent"> 
       <Setter Property="Source" Value="Resources\Approve_64_Trans.bmp"/> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Status}" Value="SendFailed"> 
       <Setter Property="Source" Value="Resources\Cancel_64_Trans.bmp"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Image.Style> 
    </Image> 
+0

謝謝你。這就像一個魅力。 – dotNET