Silverlight 自定义控件的继承问题1

来源:互联网 发布:matlab 查看数组 编辑:程序博客网 时间:2024/06/14 10:47

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
    {

 

....

    }

}

原创粉丝点击