我想將一些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