MVVM 애플리케이션에서는 ViewModel이 실제 뷰를 모르기 때문에 양식 닫기를 관리하는 것이 어려울 수 있습니다. 이 문서에서는 연결된 속성을 사용하여 ViewModel에서 양식을 원활하게 닫는 우아한 솔루션을 살펴봅니다.
ViewModel이 사용자 자격 증명을 보유하는 일반적인 로그인 양식을 생각해 보세요. 로그인 명령을 제출하면 ViewModel이 로그인 작업을 시작합니다.
이 문제를 해결하기 위해 추가 속성을 활용하여 ViewModel과 View 사이의 격차를 해소할 수 있습니다.
<code class="language-xml"><Window ... DialogResult="{Binding DialogResult, Source={StaticResource ViewModel}}" xmlns:xc="clr-namespace:ExCastle.Wpf"> </Window></code>
이 속성은 ViewModel의 DialogResult 속성을 창의 DialogResult 속성에 바인딩합니다. ViewModel이 DialogResult를 수정하면 연결된 속성은 자동으로 창의 DialogResult를 업데이트하고 그에 따라 양식을 닫습니다.
첨부된 속성의 코드는 다음과 같습니다.
<code class="language-csharp">using System.Windows; 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>
ViewModel에서 INotifyPropertyChanged를 구현하고 로그인이 성공하면 DialogResult 속성을 업데이트합니다.
<code class="language-csharp">private bool? _dialogResult; public bool? DialogResult { get { return _dialogResult; } set { _dialogResult = value; OnPropertyChanged(nameof(DialogResult)); } } // 登录命令逻辑 public ICommand LoginCommand { get; set; }</code>
이 접근 방식은 MVVM 원칙에 영향을 주지 않고 양식 닫기 문제를 우아하게 해결합니다. ViewModel은 뷰에서 분리된 상태로 유지되는 동시에 간단한 속성 바인딩을 통해 양식 닫기를 효과적으로 제어합니다.
위 내용은 MVVM의 연결된 속성을 사용하여 ViewModel에서 WPF 양식을 닫으려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!