2013-01-16 23 views
7

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

<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; 
+0

はあなたがIconプロパティに持つべきウリの例を持っている(あなたはすでにこれをしなかった)

?イメージは埋め込まれたリソースであるか、緩いファイルであるか、Web上にありますか? – slugster

+0

私が作成したちょうど.jpg画像。画像はデスクトップに保存されます。私はそれをIconプロパティにバインドしようとしています。 – Virus

+0

'Icon'には画像ファイルの絶対パスが含まれていますか? – Clemens

答えて

19

私はこれを一度実行しましたが、最高の解決策ではないかもしれませんが、以下が私のために働いていました。

1.例えば、プロジェクトに画像を追加します。

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

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

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

(注:私は結合を支援するためにカリバーンマイクロを使用)

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

YourImageプロパティへ

4.バインドソース属性:

+1

また、コンバータを使用してパスからImageSourceを作成することもできます。 – slugster

+0

このイメージをソリューションに追加する必要がありますか?私はビューモデルからこれをやろうとしています、それは大丈夫ですか? – Virus

+1

@スラスタですが、余分なオーバーヘッドが加わります。これは良い選択肢ですが、個人的にはコンバーターがあまり好きではありません。 – Deruijter

関連する問題