C# SL 5浏览器外,提升信任-从任何本地目录显示PNG

C# SL 5浏览器外,提升信任-从任何本地目录显示PNG,c#,silverlight,xaml,silverlight-5.0,C#,Silverlight,Xaml,Silverlight 5.0,我的理解是,当我将SL5设置为运行OOB并提升信任时,我应该对本地系统上的任何目录/文件具有完全开放的访问权限。如果外部系统将png图像文件放入用户的c:\images文件夹,如何将各种png文件加载到XAML图像元素中 这条线路的工作原理是: image.UriSource = new Uri(value as string); 如果我将值设置为字符串,如“http://blah.com/image1.png" 但如果我尝试将其设置为: ImageUrl = new Uri(@"C:\ima

我的理解是,当我将SL5设置为运行OOB并提升信任时,我应该对本地系统上的任何目录/文件具有完全开放的访问权限。如果外部系统将png图像文件放入用户的c:\images文件夹,如何将各种png文件加载到XAML图像元素中

这条线路的工作原理是:

image.UriSource = new Uri(value as string);
如果我将值设置为字符串,如“http://blah.com/image1.png"

但如果我尝试将其设置为:

ImageUrl = new Uri(@"C:\images\image3.png")
这就决定了类似于“file:///C:.....“当它击中目标时

image.UriSource = new Uri(value as string);
线路


如何从运行OOB提升版应用程序的系统上的任何本地路径在SL5中显示png文件?

如果您正确设置了提升版权限,类似的操作应该可以正常工作

  var bmp = new BitmapImage();
  var stream = new FileStream(@"c:\dir\folder\image.png", FileMode.Open);
  bmp.SetSource(stream);
  stream.Close();
如果需要使用uri,这应该可以:

  var bmp = new BitmapImage();      
  var uri = new Uri("c:/dir/folder/image.png");
  bmp.UriSource = uri;
请注意,路径是不同的。uri路径要求使用正斜杠

然后可以将图像控件的源设置为bmp

  image.Source = bmp;
如果遇到“不允许文件操作”异常,则需要在浏览器外设置中再次检查提升的权限是否已被选中

项目->属性->浏览器外设置


选中“需要提升的信任…”

最初,此代码“image.UriSource=new Uri(值为字符串);”将“value”(IValueConverter imp的一部分)的异常设置为null,即使调试器向我显示“value”已设置为字符串file:///C:etc“而且不是空的。因此,我使用字符串strongUri=System.Convert.ToString(value)强制进行类型转换;和image.UriSource=新Uri(strongUri);空异常消失了。现在它运行了,数据绑定的“ImageUrl”属性为“”的对象显示png,但任何引用本地文件的对象都保持为空,并且不显示png。在现有代码中,它到处严重依赖“Uri”格式。有没有一种简单的方法可以将Uri对象转换回FileStream可以接受的正常字符串路径?这将使我更容易快速测试,如果有。在当前代码中,当我点击FileStream时出现异常,因为“不支持URI格式”。我已经进行了一次编辑,演示了如何使用URI。对我来说似乎很好。看看情况如何。请注意,它在uri中使用正斜杠而不是反斜杠,否则它将无法工作。谢谢wdavo。我想这可能只是一个向前的斜杠。查看代码太长,并将文件路径从资源管理器粘贴到代码中的字符串中。哑的它正在工作:)再次感谢!就因为我提到了它,是的,有一种方法可以从Uri对象中获取“普通文件路径”。。。Uri.LocalPath