使用带框架控制的 Prism NavigationService 赢得通用应用程序

Win universal app using Prism NavigationService with Frame control

Prism NavigationService如何与Frame控件结合使用? 我有一个包含框架的主页。首先,我必须导航到主页,然后我想更改 NavigationSerices 以便它使用框架而不是整个页面。

所以我需要 Windows-Store-App-Prism 框架中的 Prism 5.0 区域之类的东西。

类似的问题已经解决:Register Navigation Service to Frame Element and NOT the page - WinRt Prism 2.0 但我不喜欢这个解决方案。

解决方法:在继承自MvvmAppBase的App.xaml.cs中添加:

public static App Instance { get { return _instance; } }

private Type Resolve(string name)
{
    return Type.GetType(string.Format("{0}.Views.{1}Page", this.GetType().Namespace, name));
}

public void CreateNewNavigationFrame(Frame frame)
{
    this.NavigationService = new FrameNavigationService(new FrameFacadeAdapter(frame), Resolve, this.SessionStateService);
}

在主页面(Frame所在页面)的构造函数中:

    public AppShellPage()
    {
        this.InitializeComponent();
        App.Instance.CreateNewNavigationFrame(this.frame);
    }