如何获得存储在资源图像的乌里如何获得存储在资源图像的乌里(How to get a Uri of t

2019-05-12 02:44发布

我有两个.png添加到我的资源,我需要访问他们的开放的我们做绑定时文件。

我的xaml代码如下:

<Grid>
  <Image>
    <Image.Source>
       <BitmapImage DecodePixelWidth="10" UriSource="{Binding Path=ImagePath}"/>
    </Image.Source>
  </Image> 
</Grid>

binding使用的ImagePath代码是:

ImagePath = resultInBinary.StartsWith("1") ? Properties.Resources.LedGreen : Properties.Resources.ledRed;

然而

Properties.Resources.LedGreen

返回一个Bitmap ,而不是String包含该特定图像的URI。 我只是想知道如何提取值,而不需要解决,它的存储目录中的图像的路径。 (老实说,哪个我不知道是做,因为我无法在网络上找到任何类似的情况正确的事)。

请让我知道是否有甚至到了一个我想如果有使用首选方法。

Answer 1:

在WPF应用程序,你通常不会存储图像Properties/Resources.resx并通过的方式访问它们Properties.Resources类。

相反,你只需将图像文件添加到您的Visual Studio项目作为普通的文件,或许是一个名为“图像”或类似的文件夹中。 然后你会设置其Build Action ,以Resource ,这是在属性窗口中完成的。 你到达那里通过右键单击图像文件,并选择例如Properties菜单项。 请注意,默认值Build Action应该是Resource的图像文件反正。

为了从代码中访问这些图像资源,那么您需要使用包URI 。 有了上面的文件夹名称为“图像”,并命名为“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:

<Grid>
    <Image Width="10" Source="{Binding Path=ImageUri}" />
</Grid>


Answer 2:

声明Properties.Resources.LedGreen财产ImageSource并将其设置为开放的位置,而不是位图对象。

或者,如果你坚持把它作为一个位图,你可以通过返回得到源Properties.Resources.LedGreen.ImageSource这将是类型ImageSource

我宁愿第一种方法。



文章来源: How to get a Uri of the image stored in the resources