#c# #silverlight #mvvm #caliburn.micro
#c# #silverlight #mvvm #caliburn.micro
Вопрос:
У меня такое чувство, что это простой вопрос, но мне трудно разобраться в нем. Я использую Silverlight, MVVM и Caliburn Micro для разработки своего проекта. В одном разделе у меня есть поиск сотрудника, который должен отображать изображение сотрудника. Пользователь введет идентификационный номер, и система должна найти пользователя и изображение сотрудника на файловом сервере. Имя изображения соответствует идентификационному номеру сотрудника (например, 1234.jpg для сотрудника 1234).
Я не загружаю эти изображения в качестве ресурсов во время разработки, поскольку их сотни, и пользователю, вероятно, понадобится только одно изображение. Мой вопрос в том, как настроить мою модель, чтобы правильно привязываться к элементу управления изображением? Я знаю, как использовать базовый 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);
}
}
Вид
<Image x:Name="Photo" />
Свойство UserPhoto является строковым свойством, которое содержит URL-адрес изображения. Я пробовал веб-URL-адреса, а также UNC-пути. Изображения проверены на наличие в этом месте, но они не отображаются, когда я запускаю INCP в свойстве Photo.
Обновить
После дополнительной работы с ним кажется, что это решение будет работать, если вы используете путь к файлу (file://yourserver/yourpath/yourfile.jpg ). Я пытался получить доступ к общедоступной части файлов через http (http://yourserver.domain/yourpath/yourfile.jpg ). Метод http не работает, но метод file работает. Я все еще хотел бы использовать метод http, но у меня, по крайней мере, есть обходной путь. Есть мысли о том, почему file будет работать, а http — нет?
Ответ №1:
Попробуйте вызвать метод изменения свойства для этого свойства. Когда поднимать, зависит от вас, я бы сделал это в пользовательском настройках фотографий.
Комментарии:
1. Я делаю это. Я обновил свой пост, включив также свойство UserPhoto, чтобы вы могли видеть, как я это делаю. Я проверил, и свойство запускается, но на моей странице изображение не отображается.
Ответ №2:
Поскольку растровое изображение будет загружено асинхронно, вы можете попробовать подключить событие DownloadCompleted BitmapImage и снова запустить NPC. Это должно иметь значение.
Комментарии:
1. Спасибо за информацию. Я пробовал это, но ничего не получилось. Однако я обнаружил, что он работает с путем к файлу (вместо http — см. Мое обновление выше). Есть мысли?