XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 0
UTF-8
using SpaceEngineersBlueprintEditor.Interface.Services;
using System.Collections.ObjectModel;
using System.Diagnostics.CodeAnalysis;
using Windows.Foundation;

namespace SpaceEngineersBlueprintEditor.Implements.Services;

/// <inheritdoc cref="IItemsViewDisplayService{T}"/>
internal class ItemsViewDisplayService<T> : IItemsViewDisplayService<T> where T : class
{
    private ItemsView? _itemsView;
    private Page? _page;
    public bool IsPageLoaded => _page is not null && _page.IsLoaded;
    public event TypedEventHandler<ItemsView, ItemsViewSelectionChangedEventArgs>? SelectionChanged;

    [MemberNotNull(nameof(_page), nameof(_itemsView))]
    public void Initialize(Page page, ItemsView itemsView)
    {
        _page = page;
        _itemsView = itemsView;
        _itemsView.SelectionChanged += (sender, args) => SelectionChanged?.Invoke(sender, args);
    }

    public void Select(T? item)
    {
        if (_itemsView is not null && _page is not null && _itemsView.ItemsSource is ObservableCollection<T> itemSource && _page.IsLoaded)
            _itemsView.Select(item is not null ? itemSource.IndexOf(item) : 0);
    }
}