Загрузка изображения с файлового сервера с использованием Caliburn Micro и Silverlight - PullRequest
1 голос
/ 04 ноября 2011

У меня такое ощущение, что это простой вопрос, но мне трудно его понять. Я использую Silverlight, MVVM и Caliburn Micro для разработки своего проекта. В одном разделе у меня есть поиск сотрудника, который должен отображать фотографию сотрудника. Пользователь введет идентификационный номер, и система должна найти пользователя и найти изображение сотрудника на файловом сервере. Изображение именуется идентификатором сотрудника (например, 1234.jpg для сотрудника 1234).

Я не загружаю эти изображения как ресурсы во время разработки, поскольку их сотни, и пользователю, вероятно, понадобится только одно изображение. У меня вопрос, как мне настроить мою модель, чтобы правильно привязать к элементу управления Image? Я знаю, как использовать базовый Caliburn Micro (я все еще довольно новичок в этом, поэтому я не охватил все менее частые области), поэтому я в основном выиграл бы только от фрагментов в каждой области (View, Model View и Model) ), что относится к управлению изображением. Идеальный сценарий - назначить путь к файлу изображения переменной и показать его на моем изображении. Затем, если путь к файлу пуст, удалите изображение.

Вот код, который я пробовал:

Просмотр модели - Это для простоты. Я отодвину кое-что из этого к Модели, но точка зрения остается.

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);
    }
}

View

<Image x:Name="Photo" />

Свойство UserPhoto является строковым свойством, которое содержит URL-адрес изображения. Я пробовал веб-адреса, а также пути UNC. Проверено, что изображения находятся в этом месте, но они не отображаются, когда я запускаю INCP для свойства Photo.

Обновление

После того, как вы поэкспериментируете с ним больше, кажется, что это решение будет работать, если вы используете путь к файлу (file: //yourserver/yourpath/yourfile.jpg) Я пытался получить доступ к общедоступной стороне файлов через http (http://yourserver.domain/yourpath/yourfile.jpg). Метод http не работает, но метод файла работает. Я все еще хотел бы использовать метод http, но у меня по крайней мере есть обходной путь. Любой мысли о том, почему файл будет работать, а http не будет?

Ответы [ 2 ]

0 голосов
/ 04 ноября 2011

Поскольку BitmapImage будет загружаться асинхронно, вы можете попробовать связать событие BitCmap ImageCompleted и снова запустить NPC.Это должно иметь значение.

0 голосов
/ 04 ноября 2011

Попробуйте поднять свойство измененный метод для этого свойства. Когда вы подняли, это зависит от вас, я бы сделал это в установщике UserPhoto.

...