Перейти к содержанию

Как заставить список файлов показывать только некоторые из файлов, приложенных к карточке

Как заставить список файлов показывать только некоторые из файлов, приложенных к карточке

Если необходимо скрыть из списка файлов некоторые файлы, например определённой категории, необходимо воспользоваться расширением CardUIExtension. Ниже приведён код расширения, который обслуживает два файловых контрола. Один из них отображает все файлы, кроме тех, которые относятся к категории “Image”, а второй только файлы этой категории.

Расширение срабатывает при инициализации интерфейса карточки и делает следующее:

  1. Получаем FileControl’ы.

  2. Удаляем из полученных ранее контролов лишние файлы из коллекции Files.

  3. Добавляем обработчик IFileControl.ContainerFileAdding, в котором указываем e.Cancel = true, если файл не должен быть виден в контроле.

public sealed class CarFileControlFilterImagesUIExtension : CardUIExtension { #region Constants

private const string ImageFileCategoryName = "Image"; private const string AllFilesControlAlias = "AllFilesControl"; private const string ImageFilesControlAlias = "ImageFilesControl";

#endregion

#region Base Overrides

public override void Initialized(ICardUIExtensionContext context) { // Находим carCardModeldModel var cardModel = context.Model;

IControlViewModel allFilesControlViewModel; IControlViewModel imageFilesControlViewModel;

if (cardModel == null || !cardModel.Controls.TryGet(AllFilesControlAlias, out allFilesControlViewModel) || !cardModel.Controls.TryGet(ImageFilesControlAlias, out imageFilesControlViewModel)) { return; }

var allFilesFileControl = ((FileListViewModel) allFilesControlViewModel).FileControl; var imageFilesFileControl = ((FileListViewModel)imageFilesControlViewModel).FileControl;

// Удаляем изображения из контрола - со всеми файлами, кроме изображений for (int i = allFilesFileControl.Files.Count - 1; i > -1; i--) { var item = allFilesFileControl.Files[i]; if (item.Category != null && item.Category.Caption == ImageFileCategoryName) { allFilesFileControl.Files.RemoveAt(i); } }

// Удаляем лишние файлы из контрола - с изображениями for (int i = imageFilesFileControl.Files.Count - 1; i > -1; i--) { var item = imageFilesFileControl.Files[i]; if (item.Category == null || item.Category.Caption != ImageFileCategoryName) { imageFilesFileControl.Files.RemoveAt(i); } }

// Подписываемся на изменения контейнеров imageFilesFileControl.ContainerFileAdding += imageFilesFileControl_ContainerFileAdding; allFilesFileControl.ContainerFileAdding += allFilesFileControl_ContainerFileAdding; }

#endregion

#region Event Handlers

private void imageFilesFileControl_ContainerFileAdding(object sender, FileControlCancelEventArgs e) { { if (e.File.Category == null || e.File.Category.Caption != ImageFileCategoryName) { e.Cancel = true; } } }

private void allFilesFileControl_ContainerFileAdding(object sender, FileControlCancelEventArgs e) { { if (e.File.Category != null && e.File.Category.Caption == ImageFileCategoryName) { e.Cancel = true; } } }

#endregion

}

Back to top