我有两个.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。 我只是想知道如何提取值,而不需要解决,它的存储目录中的图像的路径。 (老实说,哪个我不知道是做,因为我无法在网络上找到任何类似的情况正确的事)。
请让我知道是否有甚至到了一个我想如果有使用首选方法。
在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>
声明Properties.Resources.LedGreen
财产ImageSource
并将其设置为开放的位置,而不是位图对象。
或者,如果你坚持把它作为一个位图,你可以通过返回得到源Properties.Resources.LedGreen.ImageSource
这将是类型ImageSource
。
我宁愿第一种方法。