C#/XAML-字符串到图像源的转换



希望我能对我遇到的问题发表一些意见。首先,我要解释一下,我确实尝试了其他问题的答案,这些答案与我所经历的相似,但没有任何运气。

目标是获取一个字符串,并将其转换为XAML代码中图像元素的路径。类似于你如何用类似的东西调整代码隐藏文件中文本块的"文本"属性,

courseFaculty.Text = BL_PageContent.FacultyMember;

其中FacultyMember是关联的BL_PageContent.cs文件中的一个属性,我想做同样的事情,但为图像的路径提供一个字符串。

这是我的图像的XAML,如果你愿意的话,它会呈现一个空白的"占位符":

<Image x:Name="courseFacultyPic" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="246,127,10,0" Height="117" Width="104"></Image>

通过更"手动"的测试,我已经将源路径作为source属性输入,并取得了成功:

<Image x:Name="courseFacultyPic" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="246,127,10,0" Height="117" Width="104" Source="facultyProf1.jpg"></Image>

使用OUGHT建议的东西将我想要的图像渲染到这个"占位符:"中

string facultyPicPath = "collegeProf1.jpeg";
Uri imageUri = new Uri(facultyPicPath);
BitmapImage facultyImage = new BitmapImage(imageUri);
Image courseFacultyPic = new Image();
courseFacultyPic.Source = facultyImage;

上面的这个代码块将从用户单击UI控件开始。不过,当我尝试它时,我会得到一个关于我实例化Uri类的行的运行时异常。运行时异常如下:

中发生"System.UriFormatException"类型的异常System.Private.Uri.dll,但未在用户代码中处理附加信息:无效URI:URI的格式不能为决心

欢迎任何想法/建议/意见。这是我的第一篇帖子,也是我在应用程序中处理图像的第一次经历,我是自学成才的,所以请考虑到这一点。非常感谢!

这是因为XAML内置了转换器,可以采用这样的图像名称并将其设置为图像源。当您使用新的BitmapImage(imageUri)时,您应该指定完整的图像路径。

如果你正在使用WPF,你可以使用ImageSourceConverter,但我认为这不适用于UWP应用程序。我不确定。。。然而写一次属于自己的东西并不难。

https://msdn.microsoft.com/en-us/library/system.windows.media.imagesourceconverter.convertfromstring(v=vs.110).aspx

我也遇到过这个错误。解决方案是必须手动指定URI的类型。根据我的经验,假设您已将映像添加到与应用程序源代码文件位于同一目录中的项目中,则必须指定的URI类型为UriKind.Relative

Uri构造函数中,在第二个参数中指定它,如下所示:

Uri imageUri = new Uri(facultyPicPath, UriKind.Relative);

这是我的问题的解决方案。感谢里兹基!

给定的System.Uri无法转换为Windows.Foundation.Uri

最新更新