Silverlight 自定义控件的继承问题
Silverlight 提供 UserControl, ChildWindow , Page 等.
如果不想直接从这些公共组件继承,而是继承自己的基类如 PageBase, 或自定义的UserControl\ChildWindow等.
在编译的时候,VS 会报异常,
错误 1 “MyForm.UserForm”的分部声明一定不能指定不同的基
类 D:\MyForm\UserForm.g.cs 37 26 MyForm.
记得asp.net 的page页面会自动一个page.design.cs的文件,存放一些界面元素的声明, 而Silverlight则生成 page.g.cs (存放在debug\obj\*文件夹里).
其实这个问题很好解决.
在修改CS代码,使继承某个基类的同时, 也要修改相应的xaml文件,最开头的那一行.
如是继承 UserControl, ,,, xaml 结构 <UserControl .... </UserControl>
如是继承 ChildWindow , ,,, xaml 结构 <controls:ChildWindow.... </controls:ChildWindow>
如是继承 Page, ,, , xaml 结构 <navigation:Page.... </navigation:Page>
如果继承 自定义的基类 PageBase. 那么xaml 改成 <MyPage:PageBase ...... </MyPage:PageBase>
PageBase 是类名.
MyPage PageBase类所在的空间名,这个仅接着 <MyPage:PageBase ..后定义的.是这个元素的属性之一.
例子:
<MyPage:PageBase
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
xmlns:System_Windows_Controls_Primitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls"
xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
xmlns:MyPage="clr-namespace:MyPage.Pages"
x:="MyPage..Pages.MyPage"
Title="UsedButton Page">
....
</MyPage:PageBase >
cs 代码
namespace MyPage
{
public partial class MyPage: PageBase
{
....
}
}