如何获取存储在资源中的图像的Uri

我有两个.png文件添加到我的资源,我需要在进行绑定时访问他们的Uri。

我的xaml代码如下:

        

使用ImagePathbinding代码是:

 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来获取源代码。

我更喜欢第一种方法。