> 백엔드 개발 > C++ > 외부 프레임워크 없이 WPF MVVM에서 간단한 보기 탐색을 구현하는 방법은 무엇입니까?

외부 프레임워크 없이 WPF MVVM에서 간단한 보기 탐색을 구현하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-26 20:41:14
원래의
629명이 탐색했습니다.

How to Implement Simple View Navigation in WPF MVVM without External Frameworks?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿