분류 전체보기

    [C# - Prism] 프리즘 예제 15 - FilteringEvent

    안녕하세요, 반나무입니다. 이번 예제는 지난 예제에 이어서 EventAggregator를 사용합니다. Event를 Filtering해 원하는 Event만 사용 할 수 있게 하는 방법을 안내합니다. 다른 부분 코드는 동일하며 Event를 Subcribe(구독)하는 부분에서 코드가 다릅니다. ModuleB public class MessageListViewModel : BindableBase { IEventAggregator _ea; private ObservableCollection _messages; public ObservableCollection Messages { get { return _messages; } set { SetProperty(ref _messages, value); } } publi..

    [C# - Prism] 프리즘 예제 14 - UsingEventAggregator

    안녕하세요, 반나무입니다. 이번 예제는 EventAggregator를 사용하는 방법을 안내합니다. Aggregator 뭔가 단어만으로는 탁! 감이 오지않아서 검색해보니 어떤 정보를 모아서 제공하는 듯한 느낌이네요 EventAggregator는 여기저기 다른 모듈에 퍼져있는 Event들을 모아서 처리 할 수 있도록 해주는 기능입니다. 왼쪽이 ModuleA / 오른쪽이 ModuleB입니다. UsingEventAggregator.Core 지난 예제에서 설명했듯이, 여러 모듈들이나 다양한곳에서 접근하는 기능들은 .Core에 생성합니다. 이번 예제에서는 Event를 .Core에 생성했습니다. namespace UsingEventAggregator.Core { // MessageSentEvent라는 Event를 만..

    [C# - Prism] 프리즘 예제 13 - IActiveAwareCommands

    안녕하세요, 반나무입니다. 이번 예제는 IActiveAwareCommand를 사용하는 방법을 안내합니다. IActiveAware가 구현되면 선택된 해당 영역에서 알림을 받을 수 있습니다. "객체 인스턴스가 활성화되었는지를 정의하고 활동이 변경될 때 알림을 내보내는 인터페이스입니다." UsingCompositeCommands.Core public interface IApplicationCommands { CompositeCommand SaveCommand { get; } } public class ApplicationCommands : IApplicationCommands { // 생성자의 매개변수가 true로 이전 예제와는 다름 // true일 시 연결되지않은 독립적인 CompositeCommand가 생..

    [C# - Prism] 프리즘 예제 12 - UsingCompositeCommands

    안녕하세요, 반나무입니다. 이번 예제는 CompositeCommand를 사용하는 방법을 안내합니다. CompositeCommand는 해당 Command를 통해 다른 ViewModel들의 DelegateCommand를 동시에 사용한다고 생각하면 됩니다. 한 개의 DelegateCommand라도 CanExcute = false일 경우 CompositeCommd의 CanExcute는 false가 됩니다. 설정창을 모듈화 한다면 전체 저장 같은 거에 사용하면 딱 좋을 듯합니다. 프로젝트 구조 먼저 프로젝트 구조를 살펴보겠습니다. .Core가 들어간 프로젝트가 있어 처음에는 당황할 수 있습니다. .Core로 이름을 지은 프로젝트는 해당 프로그램에서 전반적으로 사용되는 기능들이 들어있는 프로젝트라고 생각하면 됩니다..

    [C# - Prism] 프리즘 예제 11 - UsingDelegateCommand

    안녕하세요, 반나무입니다. 이번 예제에서는 DelegateCommand를 사용하는 방법을 안내합니다. MVVM 패턴을 사용하며 Prism을 사용하지 않을 때는 ICommand를 상속받은 Command를 제작해 버튼 클릭을 제어했었습니다. Prism에서는 해당 기능을 제공하고있습니다. private bool _isEnabled; public bool IsEnabled { get { return _isEnabled; } set { SetProperty(ref _isEnabled, value); // 해당 DelegateCommand의 CanExecute를 실행한다. ExecuteDelegateCommand.RaiseCanExecuteChanged(); } } private string _updateText;..