我想将一些PageDefinitions传递给一个新的Windows RT页面。从Object转换回Generic
的PageDefinition:
class PageDefinition<T> where T: IItem { ... }
我通过这样的:
rootFrame.Navigate(typeof(Overview), new PageDefinition<AnItem>)
然后在新的页面我想要得到的信息出来的我的论点。页面的LoadState-Method是这样预定义的:
protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
但是,如何将navigationParameter转换回我原来的Type?我尝试以下,但这不起作用(pageDefinition保持空)
var pageDefinition = navigationParameter as PageDefinition<IItem>;
我不能从原始类型投退?
感谢您的帮助,因为我环顾四周,但找不到有用的东西。
谢谢!
请注意,as运算符仅执行引用转换和装箱转换。as运算符不能执行其他转换,例如用户定义的转换,而应该使用转换表达式来执行其他转换。请参阅:http://msdn.microsoft.com/de-de/library/vstudio/cscsdfbt.aspx – 2013-03-02 11:21:35
我现在这样做: Type type = navigationParameter.GetType(); this.DefaultViewModel [“Groups”] = type.GetRuntimeProperty(“Groups”)。GetValue(navigationParameter); =>绝对不是一个干净的方式,甚至不知道是否允许在Windows Store应用程序中使用反射:(还在听你tipps! – landi 2013-03-02 11:51:00
PageDefinition是不是你的原始类型,PageDefinition 是,并且这将工作。您将您的var pageDefinition更改为PageDefinition 您还会看到一个转场异常。 –
2013-03-02 19:02:44