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

标签 c# silverlight mvvm caliburn.micro

我觉得这是一个简单的问题,但我很难弄清楚。我正在使用 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/

相关文章:

c# - 反序列化错误 : The XML element 'name' from namespace '' is already present in the current scope

c# - 在 web api 中捕获异常 - 我应该使用 try-catch 语句吗?

c# - 从 C# 项目制作 DLL?

c# - 生成连续的字母数字 ID

silverlight - 在 Silverlight MVVM 的组合框中更改所选项目时引发 PropertyChanged

wpf - 用户控件中同一 ViewModel 的两个 View

wpf - MVVM 和多窗口

silverlight - Blend 4 破坏了 Silverlight 的 VS2010

c# - Silverlight 中的递归函数

WPF/MVVMDo 我在使用 ViewModelLocator 时需要像 Unity/LightCore 这样的依赖项注入(inject)工具