在后面的代码中使用资源图像

Dan*_*gel 6 c# wpf resources visual-studio

我需要动态更改应用于我的一个按钮的背景图像,但无法弄清楚如何.图像将添加到项目中,并将其"构建操作"设置为"资源".我试过以下:

buttonUnits.Background = new ImageBrush(new BitmapImage(new Uri("/Images/InchDOWN.png",UriKind.Relative)));
Run Code Online (Sandbox Code Playgroud)

这成功编译,但会在DirectoryNotFoundException崩溃时说"无法找到路径的一部分'C:\ Images\InchDOWN.png'."

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

gco*_*res 9

您必须将图像构建为资源而不是嵌入式资源.资源是专门用于WPF项目的.

要在程序代码中使用它:

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

在我推荐的XAML中,这样做要容易得多.

编辑

我在图像之前忘记了正斜杠,这可能是问题所在.如果您需要更多信息,这是一篇关于包UrisMSDN文章.

也许你应该发一个问题,说明你究竟想要完成什么,并希望发现你的多状态按钮问题的不同方法.