74 lines
1.9 KiB
C#
74 lines
1.9 KiB
C#
namespace DDD
|
|
{
|
|
public class BaseViewModelUi<TViewModel> : BaseUi where TViewModel : SimpleViewModel
|
|
{
|
|
protected TViewModel _viewModel;
|
|
|
|
protected override void Awake()
|
|
{
|
|
base.Awake();
|
|
|
|
_viewModel = GetComponent<TViewModel>();
|
|
}
|
|
|
|
protected override void OnEnable()
|
|
{
|
|
base.OnEnable();
|
|
|
|
if (_viewModel && _bindingContext != null)
|
|
{
|
|
_bindingContext.SetDataContext(_viewModel);
|
|
_viewModel.PropertyChanged += OnViewModelPropertyChanged;
|
|
}
|
|
}
|
|
|
|
protected override void OnDisable()
|
|
{
|
|
base.OnDisable();
|
|
|
|
if (_viewModel != null)
|
|
{
|
|
_viewModel.PropertyChanged -= OnViewModelPropertyChanged;
|
|
}
|
|
}
|
|
|
|
public override void OpenPanel()
|
|
{
|
|
base.OpenPanel();
|
|
|
|
_viewModel?.Initialize();
|
|
}
|
|
|
|
public override void ClosePanel()
|
|
{
|
|
base.ClosePanel();
|
|
|
|
_viewModel?.Cleanup();
|
|
}
|
|
|
|
/// <summary>
|
|
/// ViewModel 메서드 호출 헬퍼
|
|
/// </summary>
|
|
protected void InvokeViewModelMethod(string methodName, params object[] parameters)
|
|
{
|
|
if (_viewModel == null) return;
|
|
|
|
var method = _viewModel.GetType().GetMethod(methodName);
|
|
method?.Invoke(_viewModel, parameters);
|
|
}
|
|
|
|
/// <summary>
|
|
/// ViewModel 속성 설정 헬퍼
|
|
/// </summary>
|
|
protected void SetViewModelProperty(string propertyName, object value)
|
|
{
|
|
if (_viewModel == null) return;
|
|
|
|
var property = _viewModel.GetType().GetProperty(propertyName);
|
|
if (property != null && property.CanWrite)
|
|
{
|
|
property.SetValue(_viewModel, value);
|
|
}
|
|
}
|
|
}
|
|
} |