UTKInput Validation 기능 추가
This commit is contained in:
@@ -124,7 +124,7 @@ namespace UVC.UIToolkit
|
||||
|
||||
#region Events
|
||||
/// <summary>값 변경 이벤트 (object 타입)</summary>
|
||||
public event Action<IUTKPropertyItem, object?, object?>? OnValueChanged;
|
||||
public event Action<IUTKPropertyItem, object?, object?, bool>? OnValueChanged;
|
||||
|
||||
/// <summary>값 변경 이벤트 (제네릭 타입)</summary>
|
||||
public event Action<IUTKPropertyItem<T>, T, T>? OnTypedValueChanged;
|
||||
@@ -159,35 +159,34 @@ namespace UVC.UIToolkit
|
||||
{
|
||||
if (default(T) == null)
|
||||
{
|
||||
if (notifyChangeEvent)
|
||||
{
|
||||
Value = default!;
|
||||
}
|
||||
else
|
||||
if (!Equals(_value, value))
|
||||
{
|
||||
var oldValue = _value;
|
||||
_value = default!;
|
||||
NotifyValueChanged(oldValue, default!, notifyChangeEvent);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (value is T typedValue)
|
||||
{
|
||||
if (notifyChangeEvent)
|
||||
{
|
||||
Value = typedValue;
|
||||
}
|
||||
else
|
||||
if (!Equals(_value, typedValue))
|
||||
{
|
||||
var oldValue = _value;
|
||||
_value = typedValue;
|
||||
NotifyValueChanged(oldValue, typedValue, notifyChangeEvent);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
if (notifyChangeEvent)
|
||||
Value = (T)Convert.ChangeType(value, typeof(T));
|
||||
else
|
||||
_value = (T)Convert.ChangeType(value, typeof(T));
|
||||
var v = (T)Convert.ChangeType(value, typeof(T));
|
||||
if (!Equals(_value, v))
|
||||
{
|
||||
var oldValue = _value;
|
||||
_value = v;
|
||||
NotifyValueChanged(oldValue, v, notifyChangeEvent);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -199,10 +198,10 @@ namespace UVC.UIToolkit
|
||||
|
||||
#region Protected Methods
|
||||
/// <summary>값 변경을 알립니다.</summary>
|
||||
protected void NotifyValueChanged(T oldValue, T newValue)
|
||||
protected void NotifyValueChanged(T oldValue, T newValue, bool notifyChangeEvent = false)
|
||||
{
|
||||
OnTypedValueChanged?.Invoke(this, oldValue, newValue);
|
||||
OnValueChanged?.Invoke(this, oldValue, newValue);
|
||||
OnValueChanged?.Invoke(this, oldValue, newValue, notifyChangeEvent);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
Reference in New Issue
Block a user