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

Добавление иконки-тега для файлов карточки

Добавление иконки-тега для файлов карточки

Для выбранных файлов в карточке средствами клиентского API можно добавить иконки, окрашенные в разные цвета, которые позволяют дополнительно различить файлы по произвольным признакам. Например, можно отметить иконками файлы с расширением PDF или файлы размером 100 Мб и более.

Note

Расширения на теги для файлов карточки доступны, начиная со сборки 2.4.

Рассмотрим пример, в котором для всех существующих и добавляемых файлов устанавливается одна и та же иконка. В методе SetTag можно поменять логику задания иконок в зависимости от свойств файла.

using System.Linq; using System.Windows.Media; using Tessa.Themes; using Tessa.UI; using Tessa.UI.Cards; using Tessa.UI.Cards.Controls; using Tessa.UI.Files;

namespace Tessa.Extensions.Client { public sealed class FileIconUIExtension : CardUIExtension { public override void Initialized(ICardUIExtensionContext context) { IIconContainer icons = context.Icons;

// для каждого файлового контрола foreach (IFileControl fileControl in context.Model.ControlBag.OfType<FileListViewModel>().Select(x => x.FileControl)) { // существующие файлы на момент открытия карточки foreach (IFileViewModel fileViewModel in fileControl.Items) { SetTag(fileViewModel, icons); }

// файлы, добавленные пользователем, пока карточка была открыта fileControl.Items.CollectionChanged += (s, e) => { if (e.NewItems != null) { foreach (IFileViewModel fileViewModel in e.NewItems) { SetTag(fileViewModel, icons); } } }; } }

private static void SetTag(IFileViewModel fileViewModel, IIconContainer icons) { Color background = ThemeManager.Current.Theme.GetColor(ThemeProperty.FileCurrentTaskTagBackground); fileViewModel.Tag = new FileTagViewModel("Thin15", icons, background); } }

[Registrator] public sealed class FileIconRegistrator : RegistratorBase { public override void InitializeExtensions(IExtensionContainer extensionContainer) { extensionContainer .RegisterExtension<ICardUIExtension, FileIconUIExtension>(x => x .WithOrder(ExtensionStage.AfterPlatform, 1) .WithSingleton()) ; } } }

Back to top