windows-phone-7 - Windows Phone - 为 PhoneApplicationPage 使用通用类

标签 windows-phone-7 xaml windows-phone-8 windows-phone

我有一个由 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/

相关文章:

windows-phone-7 - 在 Windows Phone 7 中设置闹钟

wpf - 是否可以在不设置 DataContext 的情况下绑定(bind)代码隐藏属性?

c# - 在 Visual Studio 设计器中为控件指定双击事件

c# - 我应该创建什么而不是 Bootstrap ? Prism 6.1.0

windows-phone-8 - Windows Phone 8 检查位置是否打开/关闭?

silverlight - 是否有帮助从 Xaml 中提取可本地化文本的工具?

c# - 强制应用程序在 WP7.5 中通过 wi-fi 连接使用 3G 连接

windows-phone-7 - ApplicationBarIconButton为null

c# - 从任务回调到主线程

database - Windows Phone 8 SQLite 数据库升级