在windows phone的sdk中,一个xaml页面的头两行行一般如下:

   1: <phone:ApplicationPage
   2:     x:Class="XXX"

这里,XXX是你的类的名称,而它的基类是phone:ApplicationPage。

到目前为止,一切正常,不是么?

但是,当XXX的基类不是phone:ApplicationPage而是YYY时,你就会在cs文件中碰上CS0263错误:部分类的基类必须一致。

cs文件里对应的错误部分:

   1: class XXX : YYY//error CS0263 here

显而易见,这是因为xaml离的第一行的问题,于是你试着把xaml的第一行换成

   1: <local:YYY //local is a namespace prefix you defined

可是你又在xaml文件里碰上了"the name xxx does not exist in namespace yyy"这个问题.

"也许我需要rebuild?" 你想, 可是, rebuild之后,问题依旧,于是你没辙了.

怎么办?

其实这是vs的一个编译的次序问题.

xaml的编译过程中,对名字的搜索来自于已编译的cs文件,而xaml又是先于cs被编译的.于是你就得到了一个逻辑上的死锁:

要编译xaml文件,需要先成功编译YYY.cs,而此时YYY.cs尚未成功编译.

怎么办?很简单,分两步来就是了。

第一步,添加YYY.cs文件,确保其编译通过.

第二步,修改XXX.xaml和XXX.xaml.cs中的继承关系,改成继承自YYY。

于是编译成功了.