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로 각각 만들었을때의 이점도 잘 모르겠네요
반응형