WPF MVVM에서 간단한 보기 탐색 구현(외부 프레임워크 필요 없음)
WPF MVVM 애플리케이션의 보기 탐색을 사용하면 다양한 사용자 인터페이스 간에 전환할 수 있습니다. 이 기사에서는 MVVM Light와 같은 프레임워크에 의존하지 않고 탐색을 구현하는 간단한 방법을 살펴봅니다.
뷰 모델 설정
기본 뷰 모델 클래스를 생성하고 공용 속성과 INotifyPropertyChanged
인터페이스를 정의합니다. 각 구체적인 뷰 모델(예: MainViewModel
, PersonViewModel
, CompanyViewModel
)은 기본 클래스에서 상속해야 합니다.
뷰를 뷰 모델에 연결
App.xaml
에서는 뷰를 뷰 모델과 연결하는 데이터 템플릿을 선언합니다. 그러면 지정된 뷰 모델을 기반으로 적절한 뷰가 렌더링됩니다.
ContentControl에 보기 모델 표시
다른 보기를 표시하려면 기본 보기의 ViewModel
속성에 바인딩된 ContentControl
을 사용하세요. 뷰 모델을 변경하면 표시된 뷰가 전환됩니다.
하위 뷰에서 탐색
하위 뷰에서 탐색하려면 기본 뷰 모델에서 명령을 생성하고 이를 하위 뷰의 버튼에 바인딩하세요. 이 명령이 실행되면 기본 뷰 모델의 ViewModel
속성이 변경되어 뷰 전환이 트리거됩니다.
코드 예시
BaseViewModel:
<code class="language-csharp">public class BaseViewModel : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; }</code>
MainViewModel:
<code class="language-csharp">public class MainViewModel : BaseViewModel { private BaseViewModel viewModel; public BaseViewModel ViewModel { get { return viewModel; } set { viewModel = value; OnPropertyChanged(nameof(ViewModel)); } } public ICommand DisplayPersonView { get; } public MainViewModel() { DisplayPersonView = new RelayCommand(() => ViewModel = new PersonViewModel()); } protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } public class RelayCommand : ICommand { private readonly Action execute; public event EventHandler CanExecuteChanged; public RelayCommand(Action execute) { this.execute = execute; } public bool CanExecute(object parameter) => true; public void Execute(object parameter) => execute(); }</code>
App.xaml(DataTemplate):
<code class="language-xml"><Application.Resources> <DataTemplate DataType="{x:Type ViewModels:MainViewModel}"> <views:MainView/> </DataTemplate> <DataTemplate DataType="{x:Type ViewModels:PersonViewModel}"> <views:PersonView/> </DataTemplate> <DataTemplate DataType="{x:Type ViewModels:CompanyViewModel}"> <views:CompanyView/> </DataTemplate> </Application.Resources></code>
사용 예:
<code class="language-xml"><ContentControl Content="{Binding ViewModel}"/></code>
이 예제에는 INotifyPropertyChanged
인터페이스와 간단한 RelayCommand
클래스 구현이 필요합니다. OnPropertyChanged
메서드와 RelayCommand
클래스는 프로젝트의 실제 상황에 따라 조정하거나 교체해야 합니다. views:
접두사는 뷰 네임스페이스를 나타냅니다. 뷰와 뷰 모델이 올바르게 정의되고 관련되어 있는지 확인하세요.
위 내용은 외부 프레임워크 없이 WPF MVVM에서 간단한 보기 탐색을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!