chr*_*rkl 3 xaml windows-phone-7 windows-phone windows-phone-8
我有一个由AddPage.xaml和AddPage.xaml.cs组成的页面.我想创建一个泛型类AddPage,它从PhoneApplicationPage扩展到外包一些重复的代码,如Save或Cancel.如果我将基类从PhoneApplicationPage更改为我的新泛型类,我会收到此错误:"AddPage"的部分声明不能指定不同的基类.
要完成此任务,您需要执行以下操作.
首先,创建基类
public class SaveCancelPhoneApplicationPage : PhoneApplicationPage
{
protected void Save() { ... }
protected void Cancel() { ... }
}
Run Code Online (Sandbox Code Playgroud)
然后,需要修改AddPage以从基类继承.需要的主要位置是在代码(AddPage.xaml.cs)和xaml中
码:
public partial class AddPage : SaveCancelPhoneApplicationPage { ... }
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
更新:根据评论添加信息
如果您需要具有类似泛型的功能,并且您必须使用Page来执行此操作(而不是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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2211 次 |
| 最近记录: |