首页 > 解决方案 > 这是在一个框架内导航页面的正确方法,它也在另一个页面框架中?(WPF)

问题描述

所以在这张图片中,它包含一个框架,页面应该显示在哪里(当前显示的页面是父页面的当前来源)

在此处输入图像描述

我找到了这个存储库,只是为了使用导航服务,但是它只使用RootFrame. 所以我做了一些改变

// INavigationService.cs
interface INavigationService
{
    string CurrentPageKey { get; }

    void GoBack();
    void NavigateTo(string frame, string pageKey);
    void NavigateTo(string frame, string pageKey, object parameter);
}

// FrameNavigationService.cs
public virtual void NavigateTo(string frameName, string key, object parameter)
{
    ...

    if(GetDescendantFromName(Application.Current.MainWindow, frameName) is Frame frame)

    ...
}

并使用了这段代码:

// MainViewModel
public RelayCommand LoadPage1Command 
            => loadPage1Command ?? (loadPage1Command = new RelayCommand(() => navigationService.NavigateTo("Page1")));

// Page1ViewModel
public RelayCommand LoadedCommand
            => loadedCommand ?? (loadedCommand = new RelayCommand(() => navigationService.NavigateTo("Page1_Frame", "Page1_1")));

我不知道这是否是在框架内导航页面的方式。如果修改后的代码不好,我可以使用任何行为设计模式来替代它吗?

标签: c#wpfmvvm

解决方案


推荐阅读