MVVM 아키텍처를 유지하면서 ViewModel이 양식을 닫을 수 있는 방법은 무엇입니까?
MVVM(Model-View-ViewModel)의 핵심 원칙은 ViewModel이 뷰의 세부 사항을 인식하지 못하도록 규정하고 있습니다. 그러나 ViewModel이 양식 종료를 신호해야 하는 시나리오가 발생합니다. MVVM 모범 사례를 유지하는 두 가지 솔루션을 살펴보겠습니다.
방법 1: 속성부착
이 방법은 연결된 속성을 사용하여 ViewModel과 View 간의 통신 격차를 해소합니다. 첨부된 속성은 폼의 DialogResult
을 직접 설정합니다.
구현:
<code class="language-csharp">using System.Windows; using System.Windows.Interactivity; namespace ExCastle.Wpf { public static class DialogCloser { public static readonly DependencyProperty DialogResultProperty = DependencyProperty.RegisterAttached( "DialogResult", typeof(bool?), typeof(DialogCloser), new PropertyMetadata(DialogResultChanged)); private static void DialogResultChanged( DependencyObject d, DependencyPropertyChangedEventArgs e) { var window = d as Window; if (window != null) window.DialogResult = e.NewValue as bool?; } public static void SetDialogResult(Window target, bool? value) { target.SetValue(DialogResultProperty, value); } } }</code>
XAML 통합:
<code class="language-xml"><Window ... xc:DialogCloser.DialogResult="{Binding DialogResult}" xmlns:xc="clr-namespace:ExCastle.Wpf"> ... </Window></code>
ViewModel은 DialogResult
속성을 설정하여 연결된 속성의 논리를 트리거하여 창을 닫습니다.
방법 2: 상호작용 요소(행동 또는 명령)
이 접근 방식은 뷰 내의 동작이나 명령을 활용하여 중개자 역할을 합니다. ViewModel은 동작 또는 명령을 트리거한 다음 양식을 닫습니다. 이는 더 많은 유연성을 제공하지만 복잡성을 더합니다.
결론:
두 기술 모두 MVVM을 위반하지 않고 ViewModel 기반 양식 폐쇄를 가능하게 합니다. 연결된 속성 접근 방식은 더 간단하고 직접적이며, 상호 작용 요소 접근 방식은 더 큰 확장성을 제공합니다. 최적의 선택은 애플리케이션의 특정 요구 사항과 복잡성에 따라 달라집니다.
위 내용은 MVVM 원칙을 준수하면서 ViewModel이 양식을 닫을 수 있는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!