使用带有Frame控件的Prism NavigationService赢得通用应用程序

时间:2015-08-01 21:51:53

标签: c# xaml navigation prism win-universal-app

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

所以我需要像Windows-Store-App-Prism框架中的Prism 5.0区域。

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

1 个答案:

答案 0 :(得分:2)

解决方案:在继承自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);
    }