在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。
于是编译成功了.