2009-04-21 45 views
6

我需要动态更改应用到我的某个按钮的背景图像,但无法弄清楚方法。图像被添加到项目中,并将其“生成操作”设置为“资源”。我已经试过如下:在后面的代码中使用资源图像

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

这编译成功,但将与DirectoryNotFoundException说崩溃“找不到路径的一部分‘C:\图片\ InchDOWN.png’。”

我不希望应用程序在磁盘上查找图像。如何将图像用作嵌入式资源?我认为这涉及到将生成操作更改为嵌入式资源,但是如何在后面的代码中使用此资源?

回答

8

你必须建立图像作为资源不是一个嵌入式资源。资源专门用于WPF项目。

要在程序代码中使用它:

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

这是一个更容易在XAML我建议这样做。

编辑

我忘了图像前斜杠,这可能是问题。如果您需要更多信息,请拨打MSDN article about pack Uris

也许你应该发布一个问题,说明你正在试图完成什么,并希望发现你的多状态按钮问题的不同方法。

+0

我试过这个,我得到一个NotSupportedException说“URI前缀不被识别。” 我同意,在XAML中设置图像会更容易,但我的目标是一种多状态按钮,不知道如何在XAML中执行此操作。 – 2009-04-22 16:41:20