在创建新的WinRT视图时指定视图提供程序类型

时间:2013-01-05 21:43:47

标签: windows-8 windows-runtime

尝试了解WinRT应用中多个视图的潜在用途。我可以创建一个新视图,该视图在其自己的调度程序线程上运行,并且可以使用CoreApplication.CreateNewView进行切换。我无法弄清楚如何在第一个参数中指定如何传递视图提供程序。如果我在C#中有一个裸应用程序(尽管如果我使用Application.Start也一样):

public class Program
{
    static void Main()
    {
        CoreApplication.Run(new MyViewSource());
    }
}
public class MyViewSource : IFrameworkViewSource
{
    public IFrameworkView CreateView()
    {
        return new MyView();
    }
}
public class MyView : IFrameworkView
{
    // ...
}

如果我想用当前视图提供程序创建一个新视图(我想是创建当前活动视图的视图),我可以做

CoreApplication.CreateNewView("", "foo");

API文档说第一个参数是“新视图的视图提供程序的类ID”。那指的是什么?我试过的任何东西给出了以下内容:

  

附加信息:未注册的类(HRESULT异常:0x80040154>>(REGDB_E_CLASSNOTREG))

2 个答案:

答案 0 :(得分:1)

第一个参数是新视图类的名称。

  

新视图的视图提供程序的类ID。如果此参数为null,请使用当前视图提供程序。

如果您将第一个参数设为null,那么您的新视图将具有当前视图类重复表示。

因此,如果您想创建一个带有cutom类的新视图,您必须创建此类并放入第一个参数。

像这样:

public class MySecondView : IFrameworkView
{
// ...
}

然后:

CoreApplication.CreateNewView("MySecondView", "foo");

由于我不确定我的代码,请告诉我此操作是否成功。

答案 1 :(得分:0)

请查看以下链接以获取完美示例。

Refernce: MSDN Microsoft Multi Windows For An App

示例代码示例 Using Multiple Views in Windows Store Apps