2012-01-31 15 views
0

我在學習WPF幾個星期後,但現在我遇到了一個我還沒有解決的問題。我正在玩我的電話線,當有新的呼叫來電時,我將數據庫中的整數設置爲「1」。線路處於活動狀態時,將其設置爲「2」...當線路打開時,整數爲「0」。在我的WPF應用程序中,我得到了一個像小綠色LED的小圖像。當呼叫進入/線路被阻斷/激活時,例如必須是紅色LED。我讀過很多關於DataTrigger和EventTrigger的文章,但我不知道這是否是正確的出發點。WPF:將圖像綁定到Integer-DB字段

任何人都可以給我一點提示嗎?

非常感謝!

回答

0

有幾種方法可以實現這一點。如果你正在使用MVVM(你可能應該是),那麼你可以在你的視圖模型上有一個字符串屬性,它根據整數的值返回適當的圖像路徑。然後,您可以將Image控件的值Source綁定到視圖中視圖模型上的屬性。

<Image Source="{Binding MyImagePathStringProperty}" Width="32" Height="32" /> 

或者,您也可以此整數屬性暴露給你的看法,並使用DataTrigger設置在此基礎上整數值的圖像源。

<Image> 
    <Image.Style> 
    <Style TargetType="{x:Type Image}"> 
     <Setter Property="Source" Value="/Images/MyDefaultImage.png" /> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding MyIntegerProperty}" Value="0"> 
       <Setter Property="Source" Value="/Images/MyFirstImage.png"/> 
      </DataTrigger> 
      <DataTrigger Binding="{Binding MyIntegerProperty}" Value="1"> 
       <Setter Property="Source" Value="/Images/MySecondImage.png"/> 
      </DataTrigger> 
      <DataTrigger Binding="{Binding MyIntegerProperty}" Value="2"> 
       <Setter Property="Source" Value="/Images/MyThirdImage.png"/> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
    </Image.Style> 
</Image> 
+0

你能告訴我這個「MyIntegerProperty」是怎麼樣的嗎?這個問題令我感到可怕... – mj2k2 2012-02-13 10:26:55

+0

你使用MVVM嗎?即查看視圖模型的實例的數據上下文是什麼?在這種情況下,您的視圖模型將實現INotifyPropertyChanged,並且具有一個整數屬性(帶有getter和setter),並且在setter中,它將調用PropertyChanged事件。這告訴UI檢索新的整數值並更新綁定(在這種情況下,更新您的圖像)。在這裏閱讀有關MVVM的更多信息 - http://csharperimage.jeremylikness.com/2010/04/model-view-viewmodel-mvvm-explained.html – devdigital 2012-02-13 10:34:23

+0

嘿,沒有我不使用MVVM。 我讀過很多文章,現在我想使用ObservableCollection,因爲他們得到了CollectionChanged - Event ...當我聲明ObservableCollection時,它看起來像這樣: ObservableCollection collection = new ObservableCollection (_ context.DatabaseEntity ); 之後,我設定的CollectionChanged事件是這樣的: collection.CollectionChanged + =新NotifyCollectionChangedEventHandler(collection_CollectionChanged) – mj2k2 2012-02-17 12:44:23