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インターフェイスを使用して、ステータスをテンプレートに表示される画像に変換します。これがConverterクラスです。

[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インターフェイスを使用しているので、インターフェイスはプロパティが自動的に変更されたことを認識しているので、問題ではないことがすぐにわかります:)

私はグーグルの大学を調べて、原則として同じ問題を抱えている多くの投稿を見ましたが、コンバーターのインターフェースとプロジェクトのリソースを使用するときに解決策に出くわすことはありません。

誰か助けてもらえますか?前もって感謝します

私の他のすべてのIValueConverterクラスは完全に機能していますが、これだけではありません。

4

2 に答える 2

1

Bitmapの代わりにBitmapSourceタイプを返してみてください

変更するビット:

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

次のようにBitmapImageを返します。

return new BitmapImage(new Uri("pack://application:,,,/Resources/Image1.png"));
于 2011-08-23T18:29:18.340 に答える
0

ImageSource派生型ではない標準のBitmapクラスの使用に問題があるのではないかと思います。

ImageSourceタイプを使用する必要があります:http: //msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapimage.aspx

パックURIについてわからない場合は、次を参照してください:http: //msdn.microsoft.com/en-us/library/aa970069.aspx

于 2011-08-23T15:03:25.943 に答える