83 lines
3.1 KiB
C#
83 lines
3.1 KiB
C#
using Lattice.Core.Docking.Abstractions;
|
|
|
|
namespace Lattice.Core.Docking.Models;
|
|
|
|
/// <summary>
|
|
/// Представляет автоскрываемую панель, которая может быть прикреплена к одной из сторон окна.
|
|
/// Автоскрываемые панели скрываются, оставляя видимой только заголовок, и разворачиваются при наведении курсора или клике.
|
|
/// </summary>
|
|
public class AutoHidePanel
|
|
{
|
|
/// <summary>
|
|
/// Инициализирует новый экземпляр класса <see cref="AutoHidePanel"/>.
|
|
/// </summary>
|
|
/// <param name="content">Содержимое панели.</param>
|
|
/// <param name="side">Сторона окна для прикрепления панели.</param>
|
|
/// <exception cref="ArgumentNullException">Выбрасывается, когда <paramref name="content"/> равен null.</exception>
|
|
public AutoHidePanel(IDockContent content, DockSide side)
|
|
{
|
|
Content = content ?? throw new ArgumentNullException(nameof(content));
|
|
Side = side;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Получает уникальный идентификатор панели.
|
|
/// </summary>
|
|
public string Id { get; } = Guid.NewGuid().ToString();
|
|
|
|
/// <summary>
|
|
/// Получает содержимое панели.
|
|
/// </summary>
|
|
public IDockContent Content { get; }
|
|
|
|
/// <summary>
|
|
/// Получает или задает сторону окна, к которой прикреплена панель.
|
|
/// </summary>
|
|
public DockSide Side { get; set; }
|
|
|
|
/// <summary>
|
|
/// Получает или задает размер панели в пикселях.
|
|
/// Для левой/правой сторон - ширина, для верхней/нижней - высота.
|
|
/// </summary>
|
|
public double Size { get; set; } = 300;
|
|
|
|
/// <summary>
|
|
/// Получает или задает значение, указывающее, видима ли панель.
|
|
/// </summary>
|
|
public bool IsVisible { get; set; }
|
|
|
|
/// <summary>
|
|
/// Получает или задает смещение для анимации выезда/заезда панели.
|
|
/// Значение от 0.0 (полностью скрыта) до 1.0 (полностью развернута).
|
|
/// </summary>
|
|
public double SlideOffset { get; set; }
|
|
|
|
/// <summary>
|
|
/// Получает заголовок панели, взятый из содержимого.
|
|
/// </summary>
|
|
public string Title => Content?.Title ?? "Auto-hide Panel";
|
|
|
|
/// <summary>
|
|
/// Переключает видимость панели.
|
|
/// </summary>
|
|
public void Toggle()
|
|
{
|
|
IsVisible = !IsVisible;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Показывает панель.
|
|
/// </summary>
|
|
public void Show()
|
|
{
|
|
IsVisible = true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Скрывает панель.
|
|
/// </summary>
|
|
public void Hide()
|
|
{
|
|
IsVisible = false;
|
|
}
|
|
} |