using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Input;
using System.Windows.Threading;
using XFEToolBox.Client.Utilities;
using XFEToolBox.WpfCore.Windowing;
namespace XFEToolBox.Client.Views.Windows;
///
/// 面向工具开发者的控件目录、实时演示和 XAML 参考窗口。
///
public partial class ControlGalleryWindow : Window
{
public const string ToolControlsXmlns =
"xmlns:controls=\"clr-namespace:XFEToolBox.WpfCore.Controls;assembly=XFEToolBox.WpfCore\"";
private static ControlGalleryWindow? activeWindow;
private readonly IReadOnlyList catalog;
private readonly ICollectionView catalogView;
private string selectedCategory = AllCategoriesLabel;
private ControlGalleryItem? selectedItem;
private const string AllCategoriesLabel = "全部控件";
public ControlGalleryWindow()
{
InitializeComponent();
WindowWorkAreaHelper.Attach(this);
catalog = BuildCatalog();
catalogView = CollectionViewSource.GetDefaultView(catalog);
catalogView.Filter = FilterItem;
ControlList.ItemsSource = catalogView;
CategoryFilter.ItemsSource = new[] { AllCategoriesLabel }
.Concat(catalog.Select(item => item.Category).Distinct())
.ToArray();
CategoryFilter.SelectedIndex = 0;
CountText.Text = $"{catalog.Count} 项";
StatusText.Text = $"已加载 {catalog.Count} 个统一控件示例";
Loaded += (_, _) =>
{
if (ControlList.SelectedItem is null && catalogView.Cast