Как поместить картинку на форму без сохранения на диск. (использую Binding)

380
23 декабря 2016, 11:46

Сейчас у меня в MainView.xaml

<Image Grid.Row="1" Source="{Binding Path=map.MapImage}"></Image>

А в MapViewModel.cs

public BitmapImage MapImage
    {
        get { return Map.MapComb; }
        set
        {
            Map.MapComb = value;
            OnPropertyChanged("MapImage");
        }
    }

Код работает как надо (но мне так не надо), я могу любой файлик с изображением запихнуть в MapImage и он отобразится на форме.

А нужно в MapViewModel.cs

public Image MapImage //System.Drawing.Image
    {
        get { return Map.MapComb; }
        set
        {
            Map.MapComb = value;
            OnPropertyChanged("MapImage");
        }
    }

Что должно быть в MainView.xaml? Принимается вариант с правками в MapViewModel.cs и где угодно. ГЛАВНОЕ рисовать на форме картинку из переменной, не сохраняя её никуда на диск.

PS: стараюсь сделать MVVM приложение.

Answer 1

Используйте свойство Source. Например, в коде View можно сделать так:

Children.Add(new Image
{
     Source = bmp
});  

где bmp типа ImageSource. Можно его создать из массива байт. Например:

byte[] array;
....
BitmapImage bmp = new BitmapImage();
var ms = new MemoryStream(array);
bmp.BeginInit();
bmp.StreamSource = ms;
bmp.EndInit();
Answer 2

С System.Drawing.Image не подойдёт, т. к. WPF работает лишь с классами наподобие System.Windows.Media.ImageSource. Можно написать конвертер, который будет превращать System.Drawing.Image в System.Windows.Media.Imaging.BitmapImage, но это скорее всего не нужно. Вы должны в том месте, где вы получаете вашу картинку, получать её сразу в правильном формате.

READ ALSO
Ошибка: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена."

Ошибка: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена."

Добрый день, подскажите пожалуйста, с чем может связана ошибка "Попытка чтения или записи в защищенную памятьЭто часто свидетельствует о том,...

1245
Запуск UWP приложения из другой программы

Запуск UWP приложения из другой программы

Есть UWP приложение, его нужно запустить из другой программы, запускexe не удаётся

572
Как сделать запрет на закрытие формы?

Как сделать запрет на закрытие формы?

Как сделать запрет на закрытие пользовательской формы?

324