我觉得这是一个简单的问题,但我很难弄清楚。我正在使用 Silverlight、MVVM 和 Caliburn Micro 来开发我的项目。在一个部分中,我有一个员工查找应该显示员工的图片。用户将输入一个 ID 号,系统将查找用户并在文件服务器上找到员工的图像。图像以员工 ID 号命名(例如,1234.jpg 代表员工 1234)。
我不会在设计时将这些图片作为资源加载,因为有数百张,用户可能只需要一张图片。我的问题是如何设置模型以正确绑定(bind)到 Image 控件?我知道使用基本的 Caliburn Micro(我对它还很陌生,所以我没有涵盖所有不太常见的区域)所以我基本上会从每个区域的片段( View 、模型 View 和模型)中受益) 这将与图像控件有关。理想的情况是将图像的文件路径分配给一个变量,并将其作为图像显示在我的 View 中。然后,如果文件路径为空,则让图像消失。
这是我尝试过的代码:
查看型号 - 这是为了简单。我会将其中的一些内容推送给模型,但重点是存在的。
public ImageSource Photo
{
get
{
return new BitmapImage(new Uri(UserPhoto, UriKind.Absolute));
}
}
public string UserPhoto
{
get
{
return this._userPhoto;
}
set
{
this._userPhoto = value;
NotifyOfPropertyChange(() => UserPhoto);
NotifyOfPropertyChange(() => Photo);
}
}
查看
<Image x:Name="Photo" />
UserPhoto 属性是一个字符串属性,用于保存图像的 URL。我尝试了 Web URL 以及 UNC 路径。图像已被验证位于该位置,但当我在 Photo 属性上触发 INCP 时,它们不会显示。
更新
在玩了更多之后,如果您使用文件路径(file://yourserver/yourpath/yourfile.jpg),似乎该解决方案将起作用。我一直试图通过 http (http://yourserver.domain/yourpath/yourfile.jpg) 访问文件的公共(public)端。 http 方法不起作用,但 file 方法起作用。我仍然想使用 http 方法,但我至少有一个解决方法。关于为什么文件可以工作但 http 不能工作的任何想法?
最佳答案
尝试提高该属性的属性更改方法。何时提出由您决定,我会在 UserPhoto setter 中进行。
关于c# - 使用 Caliburn Micro 和 Silverlight 从文件服务器加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8003094/