C# 使用Caliburn Micro和Silverlight从文件服务器加载图像

C# 使用Caliburn Micro和Silverlight从文件服务器加载图像,c#,silverlight,mvvm,caliburn.micro,C#,Silverlight,Mvvm,Caliburn.micro,我觉得这是一个简单的问题,但我很难弄明白。我正在使用Silverlight、MVVM和Caliburn Micro来开发我的项目。在一个部分中,我有一个员工查找,它应该显示员工的图片。用户将输入一个ID号,系统应该查找用户并在文件服务器上找到员工的图像。图像以员工ID号命名(例如,员工1234的1234.jpg) 我不会在设计时将这些图片作为资源加载,因为有数百张图片,用户可能只需要一张图片。我的问题是如何设置模型以正确绑定到图像控件?我知道使用基本的Caliburn Micro(我对它还是相当

我觉得这是一个简单的问题,但我很难弄明白。我正在使用Silverlight、MVVM和Caliburn Micro来开发我的项目。在一个部分中,我有一个员工查找,它应该显示员工的图片。用户将输入一个ID号,系统应该查找用户并在文件服务器上找到员工的图像。图像以员工ID号命名(例如,员工1234的1234.jpg)

我不会在设计时将这些图片作为资源加载,因为有数百张图片,用户可能只需要一张图片。我的问题是如何设置模型以正确绑定到图像控件?我知道使用基本的Caliburn Micro(我对它还是相当陌生,所以我没有涵盖所有不太常见的区域),所以我基本上只会受益于与图像控件相关的每个区域(视图、模型视图和模型)的片段。理想的情况是将图像的文件路径分配给一个变量,并将其作为图像显示在我的视图中。然后,如果文件路径为空,请将图像移除

以下是我尝试的代码:

查看模型-这是为了简单起见。我会把其中的一些推到模型上,但重点是正确的

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). http方法不起作用,但file方法起作用。我仍然希望使用http方法,但至少我有一个解决方法。关于为什么文件可以工作而http不能工作,有什么想法吗?

尝试为该属性提出属性更改方法。由您决定何时启动,我将在UserPhoto setter中启动。

由于BitmapImage将异步加载,您可以尝试连接BitmapImage的DownloadCompleted事件,然后再次启动NPC。这应该会有所不同。

我正在这样做。我更新了我的帖子,加入了UserPhoto属性,这样你就可以看到我是怎么做的。我检查了,该属性正在被激发,但我的页面上没有显示任何图像。谢谢您的输入。我试过了,但没有成功。但是,我发现它可以与文件路径一起工作(而不是http-请参阅上面的更新)。有什么想法吗?