Как можно изменить источники изображений в XAML во время выполнения? Прямо сейчас я их указываю на встроенный URI ресурса. В модели представления у меня есть элементы управления изображением, определенные, но не привязанные ни к чему, как я могу получить их в представлении?Динамически изменяющиеся источники изображения XAML?
0
A
ответ
0
Например, можно использовать imageconverter. Если вы установите свойство для привязки, вы можете получить значение из конвертера, а затем вернуть BitmapSource для привязки.
public sealed class ImageConverter : IValueConverter
{
internal static class NativeMethods
{
[DllImport("gdi32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool DeleteObject(IntPtr hObject);
}
public BitmapSource ToBitmapSource(System.Drawing.Bitmap source)
{
BitmapSource bitSrc = null;
var hBitmap = source.GetHbitmap();
try
{
bitSrc = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
hBitmap,
IntPtr.Zero,
Int32Rect.Empty,
BitmapSizeOptions.FromEmptyOptions());
}
catch (Win32Exception)
{
bitSrc = null;
}
finally
{
NativeMethods.DeleteObject(hBitmap);
}
return bitSrc;
}
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
// call function to get BitmapSource
using (Bitmap bitmap = new Bitmap("{image path}"))
{
return ToBitmapSource(bitmap);
}
}
}
1
<Image x:Name="UserImage" Source="{Binding MembershipUserViewModel.UserId, Converter={StaticResource _userIdToImageConverter}, UpdateSourceTrigger=Explicit}" Stretch="Fill" />
public class UserIdToImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var image = String.Format("{0}/../{1}.jpg",
Application.Current.Host.Source,
value);
var bitmapImage = new BitmapImage(new Uri(image)){CreateOptions = BitmapCreateOptions.IgnoreImageCache};
return bitmapImage;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Смежные вопросы
- 1. Динамически изменяющиеся атрибуты свойств
- 2. Highcharts Динамически изменяющиеся фрагменты
- 3. Динамически изменяющиеся URLs
- 4. Динамически изменяющиеся элементы DIV
- 5. Динамически изменяющиеся свойства RangeValidator
- 6. Динамически изменяющиеся мастера-страница
- 7. Динамически изменяющиеся переменные PHP
- 8. Динамически изменяющиеся критерии отношений
- 9. динамически изменяющиеся графики python
- 10. Динамически изменяющиеся GXT/Сенч виджеты
- 11. Динамически изменяющиеся веса в TensorFlow
- 12. Угловые 2 динамически изменяющиеся вкладки
- 13. Интернет-источники для стилей XAML
- 14. Rx, динамически объединяющиеся источники
- 15. Добавить динамически изображения в XAML в Canvas
- 16. Источник изображения XAML динамически основан на содержании
- 17. Apache Camel - Динамически изменяющиеся значения дросселя
- 18. Android Emulator, динамически изменяющиеся SD-карты
- 19. SSRS - Динамически изменяющиеся параметры в связанном отчете
- 20. Динамически изменяющиеся текстовые сообщения через Ajax
- 21. Значения Subeport, не изменяющиеся динамически в SSRS
- 22. Динамически изменяющиеся правила проверки с выбранным входом
- 23. Динамически изменяющиеся ЦС в WIX Install Sequence
- 24. Источники xaml tutorial для windows phone
- 25. Связывание xaml векторных изображений динамически
- 26. Как кэшировать изображения, часто изменяющиеся в PHP?
- 27. Изображения, не изменяющиеся внутри симулятора iPhone
- 28. Изображения, изменяющиеся в ListView? (Parse & Picasso)
- 29. Изображения, не изменяющиеся на мобильных устройствах
- 30. Динамически изменяющиеся URL-адреса изображений в React Native
http://stackoverflow.com/questions/2531539/wpf-databind-image-source-in-mvvm – kenny
Их решение использует DataTriggers, который требует определения всех URIs в XAML, есть ли способ, с помощью которого я мог бы связать элементы управления изображением из моего ViewModel с представлением, чтобы представление не касалось источника изображения? Благодарю. – TheWolf