试图了解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”.那指的是什么?我试过的任何东西给出了以下内容:
Additional information: Class not registered (Exception from HRESULT: 0x80040154 > >(REGDB_E_CLASSNOTREG))
解决方法
第一个参数是新视图类的名称.
The class ID of the view provider for the new view. If this parameter is null,use the current view provider.
如果您将第一个参数保留为null,则新视图将具有当前视图类重新表示.
因此,如果要创建具有cutom类的新视图,则必须创建此类并放入第一个参数.
像这样:
public class MySecondView : IFrameworkView { // ... }
然后:
CoreApplication.CreateNewView("MySecondView","foo");
让我知道这个操作是否成功,因为我不确定我的代码.