2011-08-23 87 views
2

我想顯示一個ListBox.ItemTemplate內的圖像取決於其綁定值,綁定值是一個對象的狀態(掛起,檢索,張貼,完成或錯誤),這裏是Image元素的XAML。在運行時更改圖像源不顯示圖像

<Window.Resources> 
    <local:StatusImageConverter x:Key="StatusImage" /> 
</Window.Resources> 

<Image Source="{Binding Path=Status, Converter={StaticResource StatusImage}}" /> 

我加入2幅圖像(Badge_tick,Badge_cross)到項目的資源和使用的IValueConverter接口狀態轉換爲將顯示在模板中的圖片,這裏是轉換器類

[ValueConversion(typeof(PreTripItem.PreTripItemStatus), typeof(Bitmap))] 
public class StatusImageConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     PreTripItem.PreTripItemStatus status = (PreTripItem.PreTripItemStatus)value; 

     switch (status) 
     { 
      case PreTripItem.PreTripItemStatus.Complete: 
       return new Bitmap(Properties.Resources.Badge_tick); 
      case PreTripItem.PreTripItemStatus.Error: 
       return new Bitmap(Properties.Resources.Badge_cross); 
      default: 
       return null; 
     } 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); //Does not need to be converted back 
    } 
} 

這建立/編譯罰款和運行,但是當狀態改變圖像不顯示在TemplateItem內。我在我的類中使用INotifyPropertyChanged接口,所以界面知道何時自動更改屬性,所以我馬上就知道這不是問題:)

我已經瀏覽了google的大學,並看到很多帖子原則上同樣的問題,但是在使用轉換器接口和項目資源時不能解決問題。

任何人都可以幫忙嗎?在此先感謝

我所有的其他IValueConverter類都運行完美,只是不是這一個。

回答

1

,請返回位圖

的BitmapSource就地型

需要更改的位數:

[ValueConversion(typeof(PreTripItem.PreTripItemStatus), typeof(BitmapSource))] 

,並返回一個BitmapImage的,如:

return new BitmapImage(new Uri("pack://application:,,,/Resources/Image1.png")); 
+0

這工作,謝謝。只有你的答案的缺點,我現在必須學習烏里的大聲笑 –