2009-04-21 2 views
6

私のボタンの1つに適用される背景イメージを動的に変更する必要がありますが、その方法はわかりません。イメージがプロジェクトに追加され、ビルドアクションがリソースに設定されます。これは正常にコンパイルが、DirectoryNotFoundExceptionが言ってクラッシュしますコード内でのリソースイメージの使用

buttonUnits.Background = new ImageBrush(new BitmapImage(new Uri("/Images/InchDOWN.png",UriKind.Relative))); 

:私がフォローしようとした「パスの一部が見つかりませんでした 『C:\イメージ\ InchDOWN.png』。」

私は、アプリがディスク上の画像を探すことを望んでいません。イメージを埋め込みリソースとして使用するにはどうすればよいですか?ビルドアクションを組み込みリソースに変更する必要があると思いますが、このリソースをコードの背後でどのように使用しますか?

答えて

8

イメージをリソースNOT埋め込みリソースとしてビルドする必要があります。リソースはWPFプロジェクトで特に使用されます。

buttonUnits.Background = new ImageBrush(new BitmapImage(new Uri("pack://application:,,,/Images/InchDOWN.png"))); 

これは私がお勧めXAMLで行うことは非常に簡単です:手続き型のコードでそれを使用する

編集

私が問題になる可能性が画像の前にスラッシュを、忘れてしまいました。詳細が必要な場合はMSDN article about pack Urisです。

多分、あなたが達成しようとしていることを述べて、うまくいけばあなたのマルチステートボタンの問題に対するさまざまなアプローチを発見するべきです。

+0

これを試したところ、「URIプレフィックスが認識されません」というNotSupportedExceptionが表示されます。 XAMLでは画像を簡単に設定できますが、私の目標はマルチ状態のボタンのようなものであり、XAMLではこれを行う方法がわかりません。 –