我有一个由 AddPage.xaml 和 AddPage.xaml.cs 组成的页面。我想创建一个从 PhoneApplicationPage 扩展的通用类 AddPage 以外包一些重复代码,如保存或取消。 如果我将基类从 PhoneApplicationPage 更改为我的新泛型类,我会收到此错误:“AddPage”的部分声明不得指定不同的基类。
最佳答案
要完成此操作,您需要执行以下操作。
首先,创建你的基类
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>
更新:根据评论添加的信息
如果您需要具有类似通用的功能并且您必须使用页面(而不是 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();
}
}
关于windows-phone-7 - Windows Phone - 为 PhoneApplicationPage 使用通用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15736150/