我有一個由AddPage.xaml和AddPage.xaml.cs組成的頁面。我想創建一個通用的類AddPage,它從PhoneApplicationPage擴展到外包一些重複的代碼,比如Save或Cancel。 如果我將基類從PhoneApplicationPage更改爲新的泛型類,則會出現此錯誤:「AddPage」的部分聲明不得指定不同的基類。Windows Phone - 爲PhoneApplicationPage使用泛型類
回答
要做到這一點,您需要執行以下操作。
首先,創建你的基類
public class SaveCancelPhoneApplicationPage : PhoneApplicationPage
{
protected void Save() { ... }
protected void Cancel() { ... }
}
然後,你AddPage需要進行修改,以從基類繼承。這是需要的主要場所是代碼(AddPage.xaml.cs)內和XAML中
代碼:
public partial class AddPage : SaveCancelPhoneApplicationPage { ... }
的XAML:
<local:SaveCancelPhoneApplicationPage
x:Class="MyPhone.Namespace.AddPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyPhone.Namespace"
<!-- other xaml elements -->
</local:SaveCancelPhoneApplicationPage>
UPDATE:信息增加了一個基於在評論
如果你需要具有通用的功能,你必須使用頁來做到這一點(而不是ViewModel),那麼你可以直到做到這一點使用泛型方法
public abstract class SaveCancelPhoneApplicationPage : PhoneApplicationPage
{
protected override void OnNavigatedTo(blaa,blaa)
{
var obj = CreateMyObject();
obj.DoStuff();
}
// You should know what your objects are,
// don't make it usable by every phone dev out there
protected MyBaseObject MyObject { get; set; }
protected T GetMyObject<T>() where T : MyBaseObject
{
return MyObject as T;
}
}
public class AddPage : SaveCancelPhoneApplicationPage
{
public AddPage()
{
MyObject = new MyAddObject();
}
}
爲了外包一些功能,你只需要聲明一些添加類來完成常見工作。擁有另一個頁面並不能完成這項工作。
public class Add
{
public bool SaveContent(string filename, string content)
{
....//some content
return true;
}
public string ViewContent(string filename)
{
string content="";
.....
return content;
}
}
添加這部分代碼,您認爲它是多餘的。
Add obj=new Add();
obj.SaveContent("myfile.txt","Hello.This is my content.");
string content("myfile.txt");
告訴我,如果這是你打算或不打算。
我想從一個基地化酶繼承,因爲我需要如果你想消除冗餘,這將工作覆蓋樣的OnNavigatedTo等 –
方法..我不能讓你目的。並且爲這樣的類創建了一個對象,您創建對象的頁面可以覆蓋這些方法。 – Mani
我知道,但它有一些缺點。例如,我想實現一個appbar的本地化方法。用你的方式,我需要將appbar實例傳遞給方法。如果我從類繼承,我可以簡單地在沒有參數傳遞的情況下調用它。我的目的是爲我的xaml頁面提供一個基類,它實現了一些常見的方法,如本地化,保存... –
- 1. 如何生成擴展Windows Phone中的自定義PhoneApplicationPage的類
- 2. 如何使用泛型類型的泛型列表泛型類
- 3. 使用泛型將類型對象類型轉換爲泛型類型
- 4. Windows Phone變量類類型
- 5. 使用泛型作爲返回類型
- 6. 泛型類型的使用
- 7. 使用泛型類型
- 8. 重複使用PhoneApplicationPage實例
- 9. 使用AutoFac使用泛型複雜類型註冊泛型
- 10. 使用泛型爲Java類的屬性
- 11. 使用類對象作爲泛型
- 12. 使用泛型類型的超類的泛型方法?
- 13. Java泛型:如何爲泛型類指定類類型?
- 14. 使用泛型類型作爲切入點的返回類型
- 15. 使用自由綁定泛型類型作爲類型參數
- 16. 如何獲取父容器,例如Windows Phone中的PhoneApplicationPage?
- 17. Windows Phone - 在頁面上持續保留PhoneApplicationPage的實例成員
- 18. 使用泛型類型參數類
- 19. 使用泛型類的強類型ID
- 20. 泛型類型作爲泛型類型參數
- 21. C#將泛型類型作爲泛型類型參數傳遞?
- 22. 的Java泛型類型泛型類型
- 23. 使用泛型實現類
- 24. 使用的PropertyInfo爲泛型類型時調用一個泛型方法
- 25. 泛型類型的泛型?
- 26. 如何使用泛型類型參數調用泛型方法
- 27. C#:使用泛型類非泛型類不確定
- 28. 如何爲泛型類指定泛型集合類型?
- 29. 爲什麼使用泛型時,你可以使用類型
- 30. 使用庫泛型類而不使用其泛型特性將使其爲原始類型?
我的SaveCancelPhoneApplicationPage是通用的。我怎麼能解決這個在XAML,因爲我需要通過類型參數? –
另一個問題:我得到一個異常'分配給屬性'Microsoft.Phone.Shell.ApplicationBarIconButton.Click'失敗。 [Line:65 Position:23]'。這個問題似乎是我無法爲applicatiobar的click事件使用繼承的方法。如果我重寫方法,那麼它的工作原理!但爲什麼這種奇怪的行爲? –
你不能使它通用,xaml不支持這個。最好的辦法是制定通用的方法 –