UTKProperyItem 수정 중

This commit is contained in:
logonkhi
2026-02-10 20:48:49 +09:00
parent 97bbb789ed
commit df6d3e3b5a
112 changed files with 2898 additions and 443 deletions

View File

@@ -54,6 +54,8 @@ namespace UVC.UIToolkit
protected bool _isVisible = true;
protected bool _showLabel = true;
protected string? _tooltipText;
private IUTKPropertyItem? _boundItemBase;
#endregion
#region Properties
@@ -285,10 +287,19 @@ namespace UVC.UIToolkit
private void SubscribeToThemeChanges()
{
UTKThemeManager.Instance.OnThemeChanged += OnThemeChanged;
RegisterCallback<DetachFromPanelEvent>(_ =>
{
UTKThemeManager.Instance.OnThemeChanged -= OnThemeChanged;
});
RegisterCallback<AttachToPanelEvent>(OnAttachToPanel);
RegisterCallback<DetachFromPanelEvent>(OnDetachFromPanel);
}
private void OnAttachToPanel(AttachToPanelEvent evt)
{
UTKThemeManager.Instance.OnThemeChanged -= OnThemeChanged;
UTKThemeManager.Instance.OnThemeChanged += OnThemeChanged;
}
private void OnDetachFromPanel(DetachFromPanelEvent evt)
{
UTKThemeManager.Instance.OnThemeChanged -= OnThemeChanged;
}
private void OnThemeChanged(UTKTheme theme)
@@ -390,6 +401,34 @@ namespace UVC.UIToolkit
TooltipText = item.Tooltip;
ShowLabel = item.ShowLabel;
}
/// <summary>
/// 상태 변경 이벤트를 구독합니다. 하위 View의 Bind에서 호출하세요.
/// </summary>
protected void BindBase(IUTKPropertyItem item)
{
UnbindBase();
_boundItemBase = item;
_boundItemBase.OnStateChanged += OnItemStateChanged;
}
/// <summary>
/// 상태 변경 이벤트 구독을 해제합니다. 하위 View의 Unbind에서 호출하세요.
/// </summary>
protected void UnbindBase()
{
if (_boundItemBase != null)
{
_boundItemBase.OnStateChanged -= OnItemStateChanged;
_boundItemBase = null;
}
}
private void OnItemStateChanged(IUTKPropertyItem item)
{
IsReadOnly = item.IsReadOnly;
ShowLabel = item.ShowLabel;
}
#endregion
#region IDisposable
@@ -406,7 +445,10 @@ namespace UVC.UIToolkit
if (disposing)
{
UnbindBase();
UTKThemeManager.Instance.OnThemeChanged -= OnThemeChanged;
UnregisterCallback<AttachToPanelEvent>(OnAttachToPanel);
UnregisterCallback<DetachFromPanelEvent>(OnDetachFromPanel);
this.ClearTooltip();
_labelElement = null;