7

画像ソース (.jpg) を使用してアイコンを表示しようとしています。ビュー モデルで Icon プロパティを作成し、それに画像のパスを割り当てようとしましたが、ビューに画像が表示されません。パスをビットマップ イメージに変換しようとしましたが、うまくいきません。ここに欠けているものはありますか?

<StackPanel Orientation="Horizontal">
                                <TextBlock Text="{Binding Path=Name}"/>
                                <Image Source="{Binding Path=Icon}"></Image>
                            </StackPanel>




BitmapImage img = new BitmapImage();
                    img.BeginInit();
                    img.CacheOption = BitmapCacheOption.OnLoad;
                    img.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
                    img.UriSource = new Uri("C:\\Users\\Public\\Pictures\\Sample Pictures\\Chrysanthemum.jpg", UriKind.Absolute);
                    img.EndInit();
                    Icon = img;
4

1 に答える 1

21

私はこれに一度遭遇しましたが、最善の解決策ではないかもしれませんが、次のことがうまくいきました。

1. プロジェクトにイメージを追加します。例:

  • プロジェクトにフォルダー images/icons を作成し、そこに画像を追加します。
  • イメージのビルド アクションをコンテンツに設定 (新しい場合はコピー)

2. ImageSource プロパティを作成します。

    public ImageSource YourImage
    {
        get { return _yourImage; }
        set 
        { 
            _yourImage = value;
            NotifyOfPropertyChange(() => YourImage);
        }
    }

(注: 結合を補助するために caliburn micro を使用しています)

3. ImageSource を次のように更新します。

            if(!string.IsNullOrEmpty("TheImageYouWantToShow"))
            {
                var yourImage = new BitmapImage(new Uri(String.Format("Images/Icons/{0}.jpg", TheImageYouWantToShow), UriKind.Relative));
                yourImage.Freeze(); // -> to prevent error: "Must create DependencySource on same Thread as the DependencyObject"
                YourImage = yourImage;
            }
            else
            {
                YourImage = null;   
            }

4. ソース属性を YourImage プロパティにバインドします。

(あなたはすでにこれをしました)

于 2013-01-16T12:46:58.243 に答える