Изображение .NET MAUI из источника в представлении коллекции не работает на IOS, но отлично работает на эмуляторе Androi ⇐ Android
Изображение .NET MAUI из источника в представлении коллекции не работает на IOS, но отлично работает на эмуляторе Androi
Образ .NET MAUI из источника в представлении коллекции не работает на IOS, но отлично работает на эмуляторе Android и Windows.
Я пытаюсь загрузить массив byte[] из базы данных SQLite, затем преобразовать его в поток памяти и после приравнять к ImageSource, чтобы добавить изображение в ObservableCollection и отобразить в CollectionView. Он хорошо работает на эмуляторе Android и в Windows. Никаких ошибок не появляется.
Вот изображения проблемы. Как это выглядит в Windows
https://drive.google.com/file/d/1ymXVjo ... sp=sharing
https://drive.google.com/file/d/1I5sPPM ... sp=sharing
Как это выглядит на iOS
https://drive.google.com/file/d/1VUIrKH ... sp=sharing
Вот мои фрагменты кода:
Модель просмотра
с использованием PlumbingCompany.Services; использование PlumbingCompany.Models; пространство имен PlumbingCompany.Data; общедоступный частичный класс Page2ViewModel: ObservableObject { частный только для чтения IJobService _jobService; общедоступная Page2ViewModel (IJobService jobService) { _jobService = jobService; ID = ГлобальныеПеременные.ТекущийID; ПолучитьФотоСписок (ID); } [Обсерваблесвойство] частный Page2Data _Page2Data = новый Page2Data(); [Обсерваблесвойство] частный ImageSource imageSource; [Обсерваблесвойство] частная строка _Name; [Обсерваблесвойство] частная строка _ImageData; [Обсерваблесвойство] частный байт[] _Bytes; [Обсерваблесвойство] интервал _ID; общественный ObservableCollection ImagesCollection {get; частный набор; } = новый ObservableCollection(); общественный список ImagesList {get; набор; } = новый список(); [Команда Реле] public async void GetPhotoList (int ID) { Коллекция изображений.Очистить(); вар imageList = ждут _jobService.GetImagesList (ID); если (imageList?.Count > 0) { imageList = imageList.ToList(); foreach (изображение var в imageList) { MemoryStream мс = новый MemoryStream(image.Bytes); Page2Data = изображение; Page2Data.imageSource = ImageSource.FromStream(() => мс); ImagesCollection.Add(Page2Data); } СписокИзображений.Очистить(); ImagesList.AddRange(imageList); ИзображенияСохранены = СписокИзображений.Count(); } иначе ИзображенияСохранены = 0; } } Модель
с использованием SQLite; использование System.ComponentModel.DataAnnotations.Schema; пространство имен PlumbingCompany.Models { [SQLite.Table("Page2Data")] общедоступный класс Page2Data { [PrimaryKey, Автоинкремент] общественный ИНТ Image_Id {получить; набор; } общедоступная строка Имя {get; набор; } общественная строка ImageSource {get; набор; } общественный ИНТ Id {получить; набор; } общественный байт [] Байты {получить; набор; } общественная строка RowID {получить; набор; } [NotMapped] общественная строка Bytes64 {get; набор; } [игнорировать] общественный ImageSource imageSource {get; набор; } } } Просмотр
... ... Просмотр фонового файла C#
с использованием PlumbingCompany.Data; пространство имен PlumbingCompany.Views; общедоступный частичный класс Page2_PhotoUpload: ContentPage { общественный Page2_PhotoUpload (Page2ViewModel viewModel) { BindingContext = ViewModel; ИнициализироватьКомпонент(); } } Также я попытался использовать конвертер пакета NUGET CommunityToolkit под названием «ByteArrayToImageSourceConverter», и результат был тот же: все работало нормально на эмуляторе Android и Windows, но не на устройстве IOS. (Он также отображал пустые места вместо фотографий на IOS) < /п>
Образ .NET MAUI из источника в представлении коллекции не работает на IOS, но отлично работает на эмуляторе Android и Windows.
Я пытаюсь загрузить массив byte[] из базы данных SQLite, затем преобразовать его в поток памяти и после приравнять к ImageSource, чтобы добавить изображение в ObservableCollection и отобразить в CollectionView. Он хорошо работает на эмуляторе Android и в Windows. Никаких ошибок не появляется.
Вот изображения проблемы. Как это выглядит в Windows
https://drive.google.com/file/d/1ymXVjo ... sp=sharing
https://drive.google.com/file/d/1I5sPPM ... sp=sharing
Как это выглядит на iOS
https://drive.google.com/file/d/1VUIrKH ... sp=sharing
Вот мои фрагменты кода:
Модель просмотра
с использованием PlumbingCompany.Services; использование PlumbingCompany.Models; пространство имен PlumbingCompany.Data; общедоступный частичный класс Page2ViewModel: ObservableObject { частный только для чтения IJobService _jobService; общедоступная Page2ViewModel (IJobService jobService) { _jobService = jobService; ID = ГлобальныеПеременные.ТекущийID; ПолучитьФотоСписок (ID); } [Обсерваблесвойство] частный Page2Data _Page2Data = новый Page2Data(); [Обсерваблесвойство] частный ImageSource imageSource; [Обсерваблесвойство] частная строка _Name; [Обсерваблесвойство] частная строка _ImageData; [Обсерваблесвойство] частный байт[] _Bytes; [Обсерваблесвойство] интервал _ID; общественный ObservableCollection ImagesCollection {get; частный набор; } = новый ObservableCollection(); общественный список ImagesList {get; набор; } = новый список(); [Команда Реле] public async void GetPhotoList (int ID) { Коллекция изображений.Очистить(); вар imageList = ждут _jobService.GetImagesList (ID); если (imageList?.Count > 0) { imageList = imageList.ToList(); foreach (изображение var в imageList) { MemoryStream мс = новый MemoryStream(image.Bytes); Page2Data = изображение; Page2Data.imageSource = ImageSource.FromStream(() => мс); ImagesCollection.Add(Page2Data); } СписокИзображений.Очистить(); ImagesList.AddRange(imageList); ИзображенияСохранены = СписокИзображений.Count(); } иначе ИзображенияСохранены = 0; } } Модель
с использованием SQLite; использование System.ComponentModel.DataAnnotations.Schema; пространство имен PlumbingCompany.Models { [SQLite.Table("Page2Data")] общедоступный класс Page2Data { [PrimaryKey, Автоинкремент] общественный ИНТ Image_Id {получить; набор; } общедоступная строка Имя {get; набор; } общественная строка ImageSource {get; набор; } общественный ИНТ Id {получить; набор; } общественный байт [] Байты {получить; набор; } общественная строка RowID {получить; набор; } [NotMapped] общественная строка Bytes64 {get; набор; } [игнорировать] общественный ImageSource imageSource {get; набор; } } } Просмотр
... ... Просмотр фонового файла C#
с использованием PlumbingCompany.Data; пространство имен PlumbingCompany.Views; общедоступный частичный класс Page2_PhotoUpload: ContentPage { общественный Page2_PhotoUpload (Page2ViewModel viewModel) { BindingContext = ViewModel; ИнициализироватьКомпонент(); } } Также я попытался использовать конвертер пакета NUGET CommunityToolkit под названием «ByteArrayToImageSourceConverter», и результат был тот же: все работало нормально на эмуляторе Android и Windows, но не на устройстве IOS. (Он также отображал пустые места вместо фотографий на IOS) < /п>
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как иметь разный макет в представлении коллекции, зависит от платформы MAUI
Anonymous » » в форуме C# - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Приложение Flutter не запускается на эмуляторе Android, но работает на эмуляторе iOS
Anonymous » » в форуме Android - 0 Ответы
- 33 Просмотры
-
Последнее сообщение Anonymous
-