如何获取存储在资源中的图像的Uri
我有两个.png
文件添加到我的资源,我需要在进行绑定时访问他们的Uri。
我的xaml
代码如下:
使用ImagePath的binding
代码是:
ImagePath = resultInBinary.StartsWith("1") ? Properties.Resources.LedGreen : Properties.Resources.ledRed;
然而
Properties.Resources.LedGreen
返回一个Bitmap
而不是包含该特定图像的Uri的String
。 我只是想知道如何提取该值而无需在存储的目录中寻址图像的路径。 (老实说,我不确定是不是正确的事情,因为我在网上找不到任何类似的情况)。
如果有可用的话我会尝试使用的方法,请告诉我。
在WPF应用程序中,通常不会将图像存储在Properties/Resources.resx
,并通过Properties.Resources
类访问它们。
相反,您只需将图像文件作为常规文件添加到Visual Studio项目中,也可以在名为“Images”的文件夹中添加。 然后,您可以将“ Build Action
设置为“ Resource
,这将在“属性”窗口中完成。 您可以通过右键单击图像文件并选择“ Properties
菜单项来实现。 请注意, Build Action
的默认值应该是图像文件的Resource
。
为了从代码访问这些图像资源,您将使用Pack URI 。 使用上面的文件夹名称“Images”和名为“LedGreen.png”的图像文件,创建这样的URI将如下所示:
var uri = new Uri("pack://application:,,,/Images/LedGreen.png");
所以你可以声明你的属性是Uri类型:
public Uri ImageUri { get; set; } // omitted INotifyPropertyChanged implementation
并设置如下:
ImageUri = resultInBinary.StartsWith("1") ? new Uri("pack://application:,,,/Images/LedGreen.png") : new Uri("pack://application:,,,/Images/LedRed.png");
最后,您的XAML应如下所示,它依赖于从Uri到ImageSource的内置类型转换:
将Properties.Resources.LedGreen
属性声明为ImageSource
并将其设置为Uri位置而不是Bitmap对象。
或者,如果您坚持将其存储为位图,则可以通过返回属于ImageSource
类型的Properties.Resources.LedGreen.ImageSource
来获取源代码。
我更喜欢第一种方法。