Silverlight 2 以丰富且强大可靠的控件模型闻名,该模型是平台中包括的控件和第三方控件包的基础。您也可以使用此控件模型构建自己的控件。
  在了解如何为新平台编写自定义控件时,我经常先复制一些内置控件:按钮和列表框等等。这些控件可能表面看起来简单,但他们总是揭示了控件模型的关键功能并可以测试人们对这些功能的掌握程度。  
  下面我们一起来一步步建立一个自定义控件MySilverButton.
1、打开VS2008,文件-新建项目-Silverlight类库,项目名输入为 MyDesignButton。创建的Silverlight类库中默认会有一个Class1.cs,这是一个普通的C#类,与Silverlight并无关系,可以选择保留它利用VS的重构功能换成喜欢的名字,也可以删掉它再重新建立一个类。总之我们的Silverlight类库中只需要保留一个我们要开发的控件名字的类就可以了。因此在此处,我们进入后把Class1.cs改名为 MySilverButton.cs,让此类继承自 ContentControl,代码如下:

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace MyDesignButton
{
    public class MySilverButton: ContentControl 
    {

    }
}

2、为此项目添加一个新文件夹,名称为themes,因为下一步我们要在此文件夹中建立一个名为Generic.xaml的文件(默认控件模板 ),用于存放我们自定义控件的外观定义。建立方法如下:在解决方案管理器中选择此项目,鼠标右键弹出菜单,添加--新建项,为此项目添加一个文件文件,默认名称为TextFile1.txt,但我们需要把它的后缀名改为xaml,所以,其全名为 Generic.xaml。此文件内容如下:

<ResourceDictionary 
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:custom="clr-namespace:MyDesignButton">

<Style TargetType="custom:MySilverButton">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="custom:MySilverButton">
                    <Grid x:Name="RootElement">
                        <Rectangle x:Name="BodyElement" Width="200" Height="100"   Fill="Brown"  Stroke="Purple" RadiusX="16" RadiusY="16" />
                        <TextBlock x:Name="ButtonCaption"  HorizontalAlignment="Center"  VerticalAlignment="Center" FontSize="26"  />
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

3、添加MySilverButton类的构造函数,并在其构造函数内部加入代码

this.DefaultStyleKey = typeof(MySilverButton);

加入此代码后,你才能在引用此控件时看到它的外观。此时构造函数如下

        public MySilverButton()
        {
               this.DefaultStyleKey = typeof(MySilverButton);
        }

4、下面我们先来看看初步效果,为此我们需要另建一个项目,文件-新建项目-Silverlight应用程序。项目名为:MySLbutton,项目类型:Asp.net web应用程序项目 。此时VS2008自动为我们搭建好必要的项目环境。内有两个项目,一个名为MySLbutton.一个名为MySLbutton.Web,后者为前者的运行环境。为看到初步效果,我们需要做如下工作。
  (1)、先在MySLbutton项目中引入我们前面所建立的名为MyDesignButton的项目中所生成的MyDesignButton.dll(在此项目的bin/debug目录下)。即我们所建立的自定义控件。
  (2)、修改MySLbutton项目的Page.xaml文件。主要是添加两处代码

一是引入xmlns定义。代码是:

xmlns:custom="clr-namespace:MyDesignButton;assembly=MyDesignButton"

二是引用我们的自定义控件。代码是:

<custom:MySilverButton x:Name="MyFirstSLbutton"> </custom:MySilverButton>

修改后,完整的Page.xaml文件为:

 <UserControl x:Class="MySLbutton.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:custom="clr-namespace:MyDesignButton;assembly=MyDesignButton"
             Width="400" Height="300">
    <Grid x:Name="LayoutRoot" Background="White">
        <custom:MySilverButton x:Name="MyFirstSLbutton">
            
        </custom:MySilverButton>
    </Grid>
</UserControl>

(3)、生成项目,并按下F5运行,我们可看到初步效果。
下一篇:
SilverLight学习笔记--建立Silverlight自定义控件(2)--事件响应

前往:Silverlight学习笔记清单

转载于:https://www.cnblogs.com/wsdj-ITtech/archive/2009/07/17/1525398.html

SilverLight学习笔记--建立Silverlight自定义控件(1)--外观设计相关推荐

  1. SilverLight学习笔记--建立Silverlight自定义控件(5)--绑定动画效果

    有了上述的基础,我们进一步完善我们的自定义控件,在此我们将创建Storyboard和前面的添加事件处理方法为我们的自定义控件加上动画效果.   1.首先,在MyDesignButton项目中进一步完善 ...

  2. SilverLight学习笔记--关于Silverlight资源文件(如:图片)的放置位置及其引用

    Silverlight中有许多资源文件,例如:图片,音频.视频,甚至XML和XAML等非执行数据文件,在Silverlight中根据资源所处位置的不同而有所区别.    资源文件可分布在我们Silve ...

  3. Silverlight学习笔记(一)——Silverlight够酷吗?

    2007年底,微软推出了Silverlight1.0,在RIA领域小试牛刀.如今,Silverlight的成长速度已经超过了人们当初的想象.其一体化的编程方式.与JavaScript和Asp.Net的 ...

  4. SilverLight学习笔记--实际应用(一)(4):手把手建立一个Silverlight应用程序之同步数据校验1...

    现在我们的程序有了添加和删除以及修改功能,下面我们看一看如何让程序具备数据校验功能.我们将用两种方式实现数据的校验,一种是在客户端进行同步校验.另一种是在服务器端进行异步校验.   本篇我们先实现如何 ...

  5. SilverLight学习笔记--如何在xaml文件中操作用户在后台代码定义的类(2)--示例篇:创建一个登录控件(原创)(转载本文请注明出处)...

    本文将示例如何运用前篇所写知识来建立一个用户自定义的登录控件.此控件界面非常简单,主要涉及的知识点是:   如何创建用户控件(包括对此控件的自定义事件和属性的编写,此处我们将创建一个名为LoginBo ...

  6. vs2010 学习Silverlight学习笔记(7):控件样式与模板

    概要: 终于知道Silverlight--App.xaml是干什么用的了,不仅可以用来封装样式(类似css),还可以制定控件模版...好强大的功能啊. 封装: 继续学习<一步一步学Silverl ...

  7. SilverLight学习笔记--Silverlight中WebRequest通讯

    本文我们学习如何使用WebRequest类实现客户端和服务器端的通讯.      本例处理过程:在客户端,我们在文本框中输入任意文本,然后用POST方法向服务器端传递信息,服务器端收到从客户端传来的信 ...

  8. SilverLight学习笔记--Silverlight之数据绑定初探

    数据绑定(Data Binding)是用户界面UI和业务对象或其它数据提供者(data provider)的连接.用户界面对象称为目标,数据提供者成为数据源.   数据绑定帮助隔离应用程序的用户界面层 ...

  9. SilverLight学习笔记--Silverlight中WebService通讯

    本文我们学习如何在Silverlight中使用WebService进行通讯. 新建项目Silverlight应用程序,命名为:SLWebService. 在服务器端我们需要做两项目工作: 1.在Web ...

最新文章

  1. 编译GCC4.8.2
  2. 简单聊下中台概念与发展
  3. idea配置Run Dashboard的方法(亲测有效)
  4. 二叉树非递归后序遍历算法
  5. [Python]网络爬虫(七):Python中的正则表达式教程
  6. python接口自动化(十六)--参数关联接口后传(详解)
  7. 如何在R中使用range()?
  8. 【算法理解】从头开始理解梯度提升算法
  9. PHP操作Trait类
  10. 计算机网络 — 网络层
  11. 软件开发文档编写规范
  12. 计算机网络中特有符号,计算机基础知识测试题-一肖中特免费公开资料.doc
  13. Android 经典系统 HTC One 802d国行电信专版/最新Viper2.6.0/永久root/强大的功能、高级设置/纯净省电ROM
  14. 长期执业的顶尖领先律所ROSEN提醒Mylan N.V.投资者注意MYL证券集体诉讼的重要截止日期为8月25日
  15. 阿里云服务器中安装配置MYSQL数据库完整教程
  16. TCP与UDP的区别:
  17. Nginx 根据URL带的参数转发
  18. 微分和导数的关系是什么?两者的几何意义有什么不同?为什么要定义微分 ?...
  19. 米江软件讲三级分销系统
  20. java中... 用法

热门文章

  1. 邮件系统常见错误代码解释 --邮件服务器端(MTA)错误代码解释
  2. 利用Python如何实现数据驱动的接口自动化测试
  3. MFC文件打开和保存
  4. oracle中的decode的使用
  5. Longest Substring Without Repeating Characters(最长不重复子序列求解)
  6. 纪中2016.8.13比赛不明总结
  7. mysql错误代码 集合
  8. Hdu 2196 - Computer
  9. phpMyAdmin安装
  10. 在centos7离线安装mysql_CentOS7离线安装MySQL