Свойство Listview isvisible не работает из кода? ⇐ C#
Свойство Listview isvisible не работает из кода?
Я пытаюсь отобразить выбранное изображение или файл в своем пользовательском интерфейсе в виде списка. Первоначально для IsVisible списка я установил значение false, а после выбора элемента я установил для свойства IsVisible значение true. Моя проблема в том, что после выбора элемента список не отображается в пользовательском интерфейсе.
MainPage.xaml
100 150 100 100 150 100 13 20 13 220 330 220 MainPage.xaml.cs
публичный частичный класс MainPage: КонтентПейдж { общественный System.Collections.Generic.IEnumerable selectedFiles; public ObservableCollection AttachmentList; Фотография FileResult; публичная главная страница() { ИнициализироватьКомпонент(); AttachmentList = новый ObservableCollection(); } частный асинхронный void OnClicked (отправитель объекта, EventArgs e) { строковое действие = ждут DisplayActionSheet(null, «Отмена», null, «Фото», «Файл»); если (действие == "Фото") { string action1 = await DisplayActionSheet(null, «Отмена», null, «Сделать фото», «Загрузить из галереи»); if (action1 == "Сделать фото") { КамераКлик(); } else if (action1 == "Загрузить из галереи") { ГалереяКлик(); } } иначе если (действие == "Файл") { пытаться { selectedFiles = ждут FilePicker.Default.PickMultipleAsync(); foreach (элемент var в selectedFiles.ToList()) { AttachmentList.Add(новые MultipleAttachments() { AttachemntName = item.FileName, ImageSource = "ic_doc_xx.png".ToString(), TextColor = Цвета.Черный, тип = "файл", путь = элемент.FullPath }); Attachment_listview.IsVisible = правда; Attachment_listview.ItemsSource = AttachmentList; } } поймать (Исключение ex) { Debug.WriteLine("исключение:>>" + ex); } } } частный асинхронный void CameraClick() { пытаться { пытаться { фото = ждут MediaPicker.CapturePhotoAsync(); если (фото != ноль) { var newFile = Path.Combine(FileSystem.CacheDirectory, photo.FileName); используя (var поток = ожидайте фото.OpenReadAsync()) используя (var newStream = File.OpenWrite(newFile)) дождитесь потока.CopyToAsync(newStream); AttachmentList.Add(новые MultipleAttachments() { AttachemntName = Путь.GetFileName(photo.FullPath), ImageSource = Path.Combine(FileSystem.CacheDirectory, photo.FileName), TextColor = Цвета.Черный, тип = "изображение", путь = фото.FullPath }); Attachment_listview.IsVisible = правда; Attachment_listview.ItemsSource = AttachmentList; } } поймать (Исключение ex) { Console.WriteLine($"CapturePhotoAsync THREW: {ex.Message}"); } } поймать (Исключение ex) { System.Diagnostics.Debug.WriteLine("Исключение:>" + ex); } } асинхронная пустота GalleryClick() { пытаться { пытаться { фото = ждут MediaPicker.PickPhotoAsync(); если (фото != ноль) { var newFile = Path.Combine(FileSystem.CacheDirectory, photo.FileName); используя (var поток = ожидайте фото.OpenReadAsync()) используя (var newStream = File.OpenWrite(newFile)) дождитесь потока.CopyToAsync(newStream); AttachmentList.Add(новые MultipleAttachments() { AttachemntName = Путь.GetFileName(photo.FullPath), ImageSource = Path.Combine(FileSystem.CacheDirectory, photo.FileName), TextColor = Цвета.Черный, тип = "изображение", путь = фото.FullPath }); Attachment_listview.IsVisible = правда; Attachment_listview.ItemsSource = AttachmentList; } } поймать (Исключение ex) { Console.WriteLine($"CapturePhotoAsync THREW: {ex.Message}"); } } поймать (Исключение ex) { System.Diagnostics.Debug.WriteLine("Исключение галереи:>" + ex); } } } общедоступный класс MultipleAttachments: INotifyPropertyChanged { общественная строка AttachemntName {получить; набор; } тип общедоступной строки {get; набор; } общедоступный строковый путь {get; набор; } частный ImageSource imageSource; общедоступный источник изображений { набор { если (значение! = ноль) { источник изображения = значение; УведомитьСвойствоИзменено(); } } получать { вернуть источник изображения; } } частный Цвет textColor; общедоступный цвет TextColor { набор { если (значение! = ноль) { текстЦвет = значение; УведомитьСвойствоИзменено(); } } получать { вернуть текстЦвет; } } публичное событие PropertyChangedEventHandler PropertyChanged; Private void NotifyPropertyChanged([CallerMemberName] String propertyName = "") { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } Если я удалю IsVisible="false" из файла xaml, элементы будут отображаться в пользовательском интерфейсе, но сначала мне нужно, чтобы представление списка было скрыто.
Обновить
В моей модели просмотра
private bool mediaVisibility = false; public bool MediaVisibility { получать { вернуть mediaVisibility; } набор { mediaVisibility = значение; OnPropertyChanged(nameof(MediaVisibility)); } } В MainPage.xaml.cs
//создаем переменную модели представления МедиаВьюМодель МВМ; ...... ..... //Добавлен контекст привязки МВМ = новая MediaViewModel (); BindingContext = МВМ; //внутри камеры, галереи и средства выбора файлов mvm.MediaVisibility = правда; В XAMl
.... @Mert Altiparmak После добавления привязки данных, как указано выше, представление списка не отображается в пользовательском интерфейсе, и я не понял, какую службу вы упоминаете в своем ответе.
Я пытаюсь отобразить выбранное изображение или файл в своем пользовательском интерфейсе в виде списка. Первоначально для IsVisible списка я установил значение false, а после выбора элемента я установил для свойства IsVisible значение true. Моя проблема в том, что после выбора элемента список не отображается в пользовательском интерфейсе.
MainPage.xaml
100 150 100 100 150 100 13 20 13 220 330 220 MainPage.xaml.cs
публичный частичный класс MainPage: КонтентПейдж { общественный System.Collections.Generic.IEnumerable selectedFiles; public ObservableCollection AttachmentList; Фотография FileResult; публичная главная страница() { ИнициализироватьКомпонент(); AttachmentList = новый ObservableCollection(); } частный асинхронный void OnClicked (отправитель объекта, EventArgs e) { строковое действие = ждут DisplayActionSheet(null, «Отмена», null, «Фото», «Файл»); если (действие == "Фото") { string action1 = await DisplayActionSheet(null, «Отмена», null, «Сделать фото», «Загрузить из галереи»); if (action1 == "Сделать фото") { КамераКлик(); } else if (action1 == "Загрузить из галереи") { ГалереяКлик(); } } иначе если (действие == "Файл") { пытаться { selectedFiles = ждут FilePicker.Default.PickMultipleAsync(); foreach (элемент var в selectedFiles.ToList()) { AttachmentList.Add(новые MultipleAttachments() { AttachemntName = item.FileName, ImageSource = "ic_doc_xx.png".ToString(), TextColor = Цвета.Черный, тип = "файл", путь = элемент.FullPath }); Attachment_listview.IsVisible = правда; Attachment_listview.ItemsSource = AttachmentList; } } поймать (Исключение ex) { Debug.WriteLine("исключение:>>" + ex); } } } частный асинхронный void CameraClick() { пытаться { пытаться { фото = ждут MediaPicker.CapturePhotoAsync(); если (фото != ноль) { var newFile = Path.Combine(FileSystem.CacheDirectory, photo.FileName); используя (var поток = ожидайте фото.OpenReadAsync()) используя (var newStream = File.OpenWrite(newFile)) дождитесь потока.CopyToAsync(newStream); AttachmentList.Add(новые MultipleAttachments() { AttachemntName = Путь.GetFileName(photo.FullPath), ImageSource = Path.Combine(FileSystem.CacheDirectory, photo.FileName), TextColor = Цвета.Черный, тип = "изображение", путь = фото.FullPath }); Attachment_listview.IsVisible = правда; Attachment_listview.ItemsSource = AttachmentList; } } поймать (Исключение ex) { Console.WriteLine($"CapturePhotoAsync THREW: {ex.Message}"); } } поймать (Исключение ex) { System.Diagnostics.Debug.WriteLine("Исключение:>" + ex); } } асинхронная пустота GalleryClick() { пытаться { пытаться { фото = ждут MediaPicker.PickPhotoAsync(); если (фото != ноль) { var newFile = Path.Combine(FileSystem.CacheDirectory, photo.FileName); используя (var поток = ожидайте фото.OpenReadAsync()) используя (var newStream = File.OpenWrite(newFile)) дождитесь потока.CopyToAsync(newStream); AttachmentList.Add(новые MultipleAttachments() { AttachemntName = Путь.GetFileName(photo.FullPath), ImageSource = Path.Combine(FileSystem.CacheDirectory, photo.FileName), TextColor = Цвета.Черный, тип = "изображение", путь = фото.FullPath }); Attachment_listview.IsVisible = правда; Attachment_listview.ItemsSource = AttachmentList; } } поймать (Исключение ex) { Console.WriteLine($"CapturePhotoAsync THREW: {ex.Message}"); } } поймать (Исключение ex) { System.Diagnostics.Debug.WriteLine("Исключение галереи:>" + ex); } } } общедоступный класс MultipleAttachments: INotifyPropertyChanged { общественная строка AttachemntName {получить; набор; } тип общедоступной строки {get; набор; } общедоступный строковый путь {get; набор; } частный ImageSource imageSource; общедоступный источник изображений { набор { если (значение! = ноль) { источник изображения = значение; УведомитьСвойствоИзменено(); } } получать { вернуть источник изображения; } } частный Цвет textColor; общедоступный цвет TextColor { набор { если (значение! = ноль) { текстЦвет = значение; УведомитьСвойствоИзменено(); } } получать { вернуть текстЦвет; } } публичное событие PropertyChangedEventHandler PropertyChanged; Private void NotifyPropertyChanged([CallerMemberName] String propertyName = "") { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } Если я удалю IsVisible="false" из файла xaml, элементы будут отображаться в пользовательском интерфейсе, но сначала мне нужно, чтобы представление списка было скрыто.
Обновить
В моей модели просмотра
private bool mediaVisibility = false; public bool MediaVisibility { получать { вернуть mediaVisibility; } набор { mediaVisibility = значение; OnPropertyChanged(nameof(MediaVisibility)); } } В MainPage.xaml.cs
//создаем переменную модели представления МедиаВьюМодель МВМ; ...... ..... //Добавлен контекст привязки МВМ = новая MediaViewModel (); BindingContext = МВМ; //внутри камеры, галереи и средства выбора файлов mvm.MediaVisibility = правда; В XAMl
.... @Mert Altiparmak После добавления привязки данных, как указано выше, представление списка не отображается в пользовательском интерфейсе, и я не понял, какую службу вы упоминаете в своем ответе.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
ListView остается пустым, когда я привязываю то же свойство к другому ListView
Гость » » в форуме C# - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Гость
-