C# 这是在一个框架内导航页面的正确方法吗,而在另一个页面框架中也是如此?(WPF)

C# 这是在一个框架内导航页面的正确方法吗,而在另一个页面框架中也是如此?(WPF),c#,wpf,mvvm,C#,Wpf,Mvvm,所以在这个包含一个框架的图像中,页面应该显示在这个框架中(当前显示的页面是父页面的当前源) 我发现了这个,只是为了使用导航服务 但是,它只使用RootFrame。所以我做了一些改变 //INavigationService.cs 接口激活服务 { 字符串CurrentPageKey{get;} void GoBack(); void NavigateTo(字符串框、字符串页键); void NavigateTo(字符串框、字符串页键、对象参数); } //FrameNavigationServ

所以在这个包含一个框架的图像中,页面应该显示在这个框架中(当前显示的页面是父页面的当前源)

我发现了这个,只是为了使用导航服务 但是,它只使用
RootFrame
。所以我做了一些改变

//INavigationService.cs
接口激活服务
{
字符串CurrentPageKey{get;}
void GoBack();
void NavigateTo(字符串框、字符串页键);
void NavigateTo(字符串框、字符串页键、对象参数);
}
//FrameNavigationService.cs
公共虚拟void NavigateTo(字符串帧名、字符串键、对象参数)
{
...
如果(GetDescendantFromName(Application.Current.MainWindow,frameName)是帧帧)
...
}
并使用此代码:

// 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")));
我不知道这是否是在框架内导航页面的方式。
如果修改后的代码不好,是否有任何行为设计模式可以替代此模式?

是否有框架的原因?内容控制和数据模板可以解决这个问题,而不需要导航服务。这似乎是一个可以轻松解决的问题,我只使用框架来显示页面。到目前为止,我还不熟悉ContentControl和DataTemplate的使用