C#/Prism
[C# - Prism] 프리즘 예제 13 - IActiveAwareCommands
반나무
2023. 8. 8. 20:50
안녕하세요, 반나무입니다.
이번 예제는 IActiveAwareCommand를 사용하는 방법을 안내합니다.
IActiveAware가 구현되면 선택된 해당 영역에서 알림을 받을 수 있습니다.
"객체 인스턴스가 활성화되었는지를 정의하고 활동이 변경될 때 알림을 내보내는 인터페이스입니다."
UsingCompositeCommands.Core
public interface IApplicationCommands
{
CompositeCommand SaveCommand { get; }
}
public class ApplicationCommands : IApplicationCommands
{
// 생성자의 매개변수가 true로 이전 예제와는 다름
// true일 시 연결되지않은 독립적인 CompositeCommand가 생성됨
private CompositeCommand _saveCommand = new CompositeCommand(true);
public CompositeCommand SaveCommand
{
get { return _saveCommand; }
}
}
ModuleA
UsingCompositeCommands예제와 다른점은 해당 ViewModel에서 IActiveAware를 상속받았다는점 입니다.
public class TabViewModel : BindableBase, IActiveAware
{
...
bool _isActive;
public bool IsActive
{
get { return _isActive; }
set
{
_isActive = value;
OnIsActiveChanged();
}
}
private void OnIsActiveChanged()
{
UpdateCommand.IsActive = IsActive;
IsActiveChanged?.Invoke(this, new EventArgs());
}
public event EventHandler IsActiveChanged;
}
IActiveAware는 IsActive를 구현해야하며, IsActive는 객체가 활성화되었는지의 여부를 판단합니다.
이 기능이 어디에 쓰이고 좋은지는 잘 모르겠습니다.
CompositeCommand를 true로 각각 만들었을때의 이점도 잘 모르겠네요
반응형