Быстрый поиск в контроле представления, как на вкладке "История заданий"
Быстрый поиск в контроле представления, как на вкладке “История задани锶
При создании быстрого поиска по всему представлению стоит учитывать, что он происходит на клиенте, соответственно, представление не должно использовать пейджинг.
using System;
using System.Threading.Tasks;
using Tessa.Extensions.Platform.Client.UI.TaskHistory;
using Tessa.UI.Cards;
using Tessa.UI.Cards.Controls;
using Tessa.Platform.Collections;
public sealed class YourUIExtension : CardUIExtension
{
public override async Task Initialized(ICardUIExtensionContext context)
{
if (!context.Model.Controls.TryGet("YourViewControlAlias", out var controlViewModel))
{
throw new ArgumentException($"Control ViewModel with Name='{"YourViewControlAlias"}' not found.");
}
var viewControlViewModel = controlViewModel as CardViewControlViewModel;
// если в представлении уже определен быстрый поиск, то удаляем его
var quickSearchIndex = viewControlViewModel.TopItems.Items.IndexOf(i => i is QuickSearchViewModel);
if (quickSearchIndex != -1)
{
viewControlViewModel.TopItems.Items.RemoveAt(quickSearchIndex);
}
// добавляем быстрый поиск
var clientQuickSearch = new ClientQuickSearchViewModel(viewControlViewModel);
viewControlViewModel.TopItems.Items.Insert(quickSearchIndex != -1 ? quickSearchIndex : 0, clientQuickSearch);
}
}
Регистрация расширения:
[Registrator]
public sealed class Registrator : RegistratorBase
{
public override void RegisterUnity()
{
this.UnityContainer
.RegisterType<YourUIExtension>(
new ContainerControlledLifetimeManager());
}
public override void RegisterExtensions(IExtensionContainer extensionContainer)
{
extensionContainer
.RegisterExtension<ICardUIExtension, YourUIExtension>(x => x
.WithOrder(ExtensionStage.AfterPlatform)
.WithUnity(this.UnityContainer));
}
}