Доработан winui

This commit is contained in:
2026-02-01 09:26:13 +03:00
parent 584df249f6
commit e8b4cb9881
26 changed files with 1842 additions and 2373 deletions

View File

@@ -7,15 +7,6 @@ namespace Lattice.UI.Docking.Services;
/// </summary>
public abstract class DockContextManagerBase : IDockContextManager
{
private readonly Dictionary<string, IDockCommand> _commands = new();
private IDockControl? _currentContextTarget;
/// <inheritdoc/>
public event EventHandler<ContextMenuShownEventArgs>? ContextMenuShown;
/// <inheritdoc/>
public event EventHandler? ContextMenuHidden;
/// <inheritdoc/>
public abstract void ShowContextMenu(IDockControl element, double x, double y);
@@ -25,25 +16,22 @@ public abstract class DockContextManagerBase : IDockContextManager
/// <inheritdoc/>
public virtual void RegisterCommand(string commandId, IDockCommand command)
{
if (string.IsNullOrEmpty(commandId))
throw new ArgumentNullException(nameof(commandId));
_commands[commandId] = command ?? throw new ArgumentNullException(nameof(command));
// Базовая реализация, должна быть переопределена в производных классах
}
/// <inheritdoc/>
public virtual void UnregisterCommand(string commandId)
{
_commands.Remove(commandId);
// Базовая реализация, должна быть переопределена в производных классах
}
/// <summary>
/// Получает команду по идентификатору.
/// </summary>
public IDockCommand? GetCommand(string commandId)
protected virtual IDockCommand? GetCommand(string commandId)
{
_commands.TryGetValue(commandId, out var command);
return command;
// Базовая реализация, должна быть переопределена в производных классах
return null;
}
/// <summary>
@@ -52,7 +40,7 @@ public abstract class DockContextManagerBase : IDockContextManager
protected virtual IEnumerable<IDockCommand> GetCommandsForElement(IDockControl element)
{
// Фильтрация команд по типу элемента и его состоянию
return _commands.Values.Where(c => CanExecuteCommand(c, element));
yield break;
}
/// <summary>
@@ -76,7 +64,6 @@ public abstract class DockContextManagerBase : IDockContextManager
/// </summary>
protected virtual void OnContextMenuShown(IDockControl target, double x, double y)
{
_currentContextTarget = target;
ContextMenuShown?.Invoke(this, new ContextMenuShownEventArgs(target, x, y));
}
@@ -85,12 +72,12 @@ public abstract class DockContextManagerBase : IDockContextManager
/// </summary>
protected virtual void OnContextMenuHidden()
{
_currentContextTarget = null;
ContextMenuHidden?.Invoke(this, EventArgs.Empty);
}
/// <summary>
/// Получает текущий целевой элемент контекстного меню.
/// </summary>
protected IDockControl? CurrentContextTarget => _currentContextTarget;
/// <inheritdoc/>
public event EventHandler<ContextMenuShownEventArgs>? ContextMenuShown;
/// <inheritdoc/>
public event EventHandler? ContextMenuHidden;
}