XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEToolBox

【WPF】XFE工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
using System.Windows;

namespace XFEToolBox.Client.ViewModel.Pages;

/// <summary>
/// 下载目录的虚拟化行。分类标题和双卡片内容共用一个扁平列表,避免嵌套列表一次性创建全部卡片。
/// </summary>
public sealed class SoftwareCatalogRowViewModel
{
    private SoftwareCatalogRowViewModel(
        SoftwareCategoryGroupViewModel? category,
        SoftwareCardViewModel? primaryCard,
        SoftwareCardViewModel? secondaryCard)
    {
        Category = category;
        PrimaryCard = primaryCard;
        SecondaryCard = secondaryCard;
    }

    public bool IsHeader => Category is not null;

    public SoftwareCategoryGroupViewModel? Category { get; }

    public SoftwareCardViewModel? PrimaryCard { get; }

    public SoftwareCardViewModel? SecondaryCard { get; }

    public Visibility SecondaryCardVisibility => SecondaryCard is null ? Visibility.Hidden : Visibility.Visible;

    public static SoftwareCatalogRowViewModel Header(SoftwareCategoryGroupViewModel category) =>
        new(category, null, null);

    public static SoftwareCatalogRowViewModel Cards(
        SoftwareCardViewModel primaryCard,
        SoftwareCardViewModel? secondaryCard) =>
        new(null, primaryCard, secondaryCard);
}