一:自定义控件封装的作用

  封装,继承,多态是面向对象语言的核心思想。封装的意义提现在程序思想“高内聚,低耦合”中,使团队开发分工更加明确,在SL程序中封装起到了很重要的作用,无论是自定义控件的封装,用户控件的封装都提现了,在程序设计中非常重要的“模块设计”思想。在SL项目中由于SL中XAML代码的属性繁多,且复杂封装控件可以降低代码的复杂读,增强程序的可读性,加快开发速度都有很大的帮助。(废话不一定准确,只可意会,你是懂的)。

二:自定义控件库的命名规则

  控件命名规则随没有强制的要求,但是为了考虑代码的复用性,和控件的复用性。以及不同程序员之间的对控件的理解,有良好的命名就提现得尤为重要。

推荐使用的命名规则为:公司名称.主类型.子类型.语言类型。公司名称为百度,主类型为控件,子类型为用户控件自定义,语言为silverlight,相应的名称为:BaiDu.Control.User.SL。

三:新建自定义库

  1.解决方案中新建项,新建“Silverlight Class Library”输入对应的名称如:BaiDu.Control.User.SL。

  2.BaiDu.Control.User.SL中控件主题文件夹名称为:Themes(名称固定),并在Themes建立资源文件Generic(名称固定);在Themes文件夹中一般存放控件的样式文件以及图片等资源;在Generic文件中管理控件样式文件如代码:

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/BaiDu.Control.User.SL;component/Themes/Fieldset.xaml" />
<ResourceDictionary Source="/BaiDu.Control.User.SL;component/Themes/InputRow.xaml" />
</ResourceDictionary>

  3.CS文件中使用样式,如:

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 SCWJ.Control.User.SL
{
public class Fieldset : ContentControl
{
public Fieldset()
{
this.DefaultStyleKey = typeof(Fieldset);
}

/// <summary>
/// 标题
/// </summary>
public string Title
{
get { return (string)GetValue(TitleProperty); }
set { SetValue(TitleProperty, value); }
}

public static readonly DependencyProperty TitleProperty =
DependencyProperty.Register("Title", typeof(string), typeof(Fieldset), null);
}
}

四:自定义控件的类型

  1.内容控件ContentControl。

  2.列表控件ItemsControl。

在下面的章节中将详细分享具体的定义的控件。

转载于:https://www.cnblogs.com/chinafhp/archive/2011/05/02/2034710.html

SL项目开发自定义控件封装之新建自定义控件类库相关推荐

  1. 微信小程序在线考试项目开发-接口封装调用

    本项目会耗时一周到两周来完成,最近要又要辛苦加班了,项目给的时间不多,程序员太不容易了,做完项目调休好好休息一下! 此时此刻,记录一下项目实现. 小程序在线考试项目介绍: 技术选型:轻量.可靠的小程序 ...

  2. vue商城项目开发:封装banner组件、组件参数传递

    封装banner组件 在Home组件中引入: components: 在template中使用: 组件参数传递 轮播图可以封装成组件,但是每个页面要展示的图片内容可能不一样,所以要进行参数传递,你传什 ...

  3. unity 项目开发——浅谈设计模式的六大原则(一)

    目录 前言 首先,六大原则是谁? 其次,为什么需要学习这六大原则? 正文 一.单一职责原则 示例: 因此我们需要进行拆分,根据具体的职能可将其具体拆分如下: Unity 单一职责原则 二.开闭原则 U ...

  4. 用C#开发自定义控件一:创建自定义控件及类库并使用

    CSharp开发自定义控件类库并测试的简单例子 最近想研究一下怎么编写CSharp的自定义控件,在此记录一下学习过程: 首先讲一下我的解决方案工程的组成: 首先打开VS(我的是VS2015)新建一个W ...

  5. 【Qt教程】2.6 - Qt5 自定义控件封装

    自定义控件是将原有控件组合.封装,并填入自定义功能,留出适当的函数接口,方便其他控件的调用.设计窗口时,可以将控件拖入,方便模块化设计. GitHub代码仓库:Qt学习例程 1. 建立工程.新建自定义 ...

  6. 项目开发一般流程、入职流程、尚学堂OA项目01_基础环境搭建、人事管理模块搭建、Servlet的高级封装

    项目开发一般流程.入职流程.尚学堂OA项目01 1. 项目开发的一般流程 2. 入职时工作的一般流程 3. 尚学堂办公自动化系统/OA 3.1 项目介绍 3.2 项目资料 3.3 项目开发 3.3.1 ...

  7. Dart Server开发环境搭建及新建运行项目

    Dart Server开发环境搭建及新建运行项目 开发环境的搭建 1. 下载Dart SDK 2. 下载开发工具 3. 创建Dart Server项目 Dart除了可以使用Flutter进行移动应用开 ...

  8. vuejs 指令封装 button 加载效果_这些Vue自定义指令,让你的项目开发爽到爆

    受 AngularJS 的启发,Vue 内置了一些非常有用的指令(比如v-html 和 v-once等),每个指令都有自身的用途.完整的指令列表可以在这里查看. 这还没完,更棒的是可以开发自定义指令. ...

  9. 【Qt+OpenCV项目开发学习】二、图片查看器应用程序开发

    一.前言 本博客将讲解如何用Qt+OpenCV开发一款图片查看器的Windows应用程序,其实不用OpenCV也能开发出这类软件,作者目的是为了学习Qt+OpenCV开发项目,所以会使用OpenCV, ...

最新文章

  1. 人工不智能,AI产品经理要帮助用户认清这一现实
  2. AndroidStudio 解决Android方法数超过65535的问题
  3. Confluence 6 配置 HTTP 超时设置
  4. unity 物体倾斜角度代码
  5. JS,JQ,PHP的小知识点整理
  6. ajax form表单提交_LayUI提交表单,监听select,分页组件
  7. u32转换bool类型_4.29.类型转换
  8. iphonex价格_正二品:帮你解读IphoneX回收价,为何二手市场iphoneX依旧吃香
  9. 从Word2Vec到Bert,聊聊词向量的前世今生(一)
  10. 15.深入分布式缓存:从原理到实践 --- 同程凤凰缓存系统基于Redis的设计与实践
  11. 全赔你们要1200亿!知网哭穷:我们一年净赚还不到2亿
  12. 英特尔cpu天梯图排名(附台式机CPU天梯图2022年3月份最新版精简图)
  13. 2023年全国最新工会考试精选真题及答案46
  14. fatal: unable to access ‘https://gitee.com/****/****.git/‘: The requested URL returned error
  15. 好嗨游戏:LPL春季赛决赛在即,黑8传奇JDG迎战S8冠军IG
  16. 脑波艺术DAO·dream lab
  17. Django MVT详细说明(三)模板T
  18. Oracle Database 12c Security - 1. Security for Today’s World
  19. 从来不作死只玩命的10年黑客
  20. 112.网络安全渗透测试—[权限提升篇10]—[Windows 2003 LPK.DDL劫持提权msf本地提权]

热门文章

  1. Java微服务(四)【idea配置本地maven】【中文idea版本】(手把手编写,超级详细)
  2. MongoDB 查询时间差问题修复
  3. MySQL远程连接丢失问题解决方法(Lost connection to MySQL server)
  4. springboot官网-application.properties文件
  5. LOJ#6085. 「美团 CodeM 资格赛」优惠券(set)
  6. selenium 文件上传
  7. 转:在 C# 中使用 P/Invoke 调用 Mupdf 函数库显示 PDF 文档
  8. Socket阻塞与非阻塞,同步与异步、I/O模型
  9. 使用Oracle UTL_FILE包操作文件
  10. 2012 Multi-University Training Contest 3