<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Code,We play with each other...</title><subtitle type="text">Sometimes i enjoy you,and sometimes you get me angry when you are so naughty.</subtitle><id>http://feed.cnblogs.com/blog/u/24059/rss</id><updated>2011-12-31T09:42:06Z</updated><author><name>PoulXia</name><uri>http://www.cnblogs.com/huazai/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazai/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/24059/rss"/><entry><id>http://www.cnblogs.com/huazai/archive/2011/12/31/2309011.html</id><title type="text">jquery插件--浮动广告</title><summary type="text">/** name: jquery.floatAD.js** Copyright (c) 2011* $author: PoulXia$* $Date: 2011-12-31$* $Contact: xbh520@gmail.com$*//*** 一个基于jQuery的浮动广告的插件调用示例1:$(document).ready(function () { new $.floatAD({ renderTo: &amp;quot;floatDiv&amp;quot;});});调用示例2:$(document).ready(function () { //初始化配置 this.config = { renderT</summary><published>2011-12-31T09:42:00Z</published><updated>2011-12-31T09:42:00Z</updated><author><name>PoulXia</name><uri>http://www.cnblogs.com/huazai/</uri></author><link rel="alternate" href="http://www.cnblogs.com/huazai/archive/2011/12/31/2309011.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazai/archive/2011/12/31/2309011.html"/><content type="html">&lt;div&gt;/*&lt;br /&gt;* name: jquery.floatAD.js&lt;br /&gt;*&lt;br /&gt;* Copyright (c) 2011&lt;br /&gt;* $author: PoulXia$&lt;br /&gt;* $Date: 2011-12-31$&lt;br /&gt;* $Contact: xbh520@gmail.com$&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* 一个基于jQuery的浮动广告的插件&lt;br /&gt;调用示例1:&lt;br /&gt;$(document).ready(function () {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; new $.floatAD({ renderTo: "floatDiv"});&lt;br /&gt;});&lt;br /&gt;调用示例2:&lt;br /&gt;$(document).ready(function () {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //初始化配置&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.config = {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; renderTo: "floatDiv",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //默认起始位置&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; position:{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x: 20,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; y: document.documentElement.clientHeight&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //默认水平移动方向&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; horizontalDirection:this.direction.right,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //默认垂直移动方向&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; verticalDirection:this.direction.up,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //每次移动的位置&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveSpace:1,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //移动间隔,多少毫秒移动一次&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay:30&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; new $.floatAD({ renderTo: "floatDiv"});&lt;br /&gt;});&lt;br /&gt;*/&lt;br /&gt;(function ($) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /** config配置列表&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * renderTo:要呈现到的元素ID&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $.floatAD = function (initConfig) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //浮动方向&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.direction =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; up: "up",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; down: "down",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; left: "left",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; right: "right"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //初始化配置&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.config = {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //默认起始位置&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; position: {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x: 20,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; y: document.documentElement.clientHeight&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //默认水平移动方向&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; horizontalDirection: this.direction.right,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //默认垂直移动方向&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; verticalDirection: this.direction.up,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //每次移动的位置&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moveSpace: 1,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //移动间隔,多少毫秒移动一次&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay: 30&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $.extend(this.config, initConfig);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $.extend(this, this.config);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //定时器&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.interval;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.container = $("#" + this.config.renderTo);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.container.css("position", "absolute")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .css("top", this.position.y)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .css("left", this.position.x);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.screenWidth = $(window).width();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.screenHeight = $(window).height();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.containerWidth = this.container.outerWidth();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.containerHeight = this.container.outerHeight();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.changePos = function () {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.container.css("left", this.position.x + $(document).scrollLeft());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.container.css("top", this.position.y + $(document).scrollTop());&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //垂直方向移动&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.verticalDirection == this.direction.down) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.position.y = this.position.y + this.moveSpace;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.position.y = this.position.y - this.moveSpace;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //如果到达垂直边界，改变移动方向&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.position.y &amp;lt;= 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.verticalDirection = this.direction.down;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.position.y = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (this.position.y &amp;gt;= (this.screenHeight - this.containerHeight)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.verticalDirection = this.direction.up;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.position.y = this.screenHeight - this.containerHeight;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //水平方向移动&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.horizontalDirection == this.direction.right) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.position.x = this.position.x + this.moveSpace;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.position.x = this.position.x - this.moveSpace;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //如果到达水平边界，改变移动方向&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.position.x &amp;lt;= 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.position.x = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.horizontalDirection = this.direction.right;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (this.position.x &amp;gt;= (this.screenWidth - this.containerWidth)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.position.x = this.screenWidth - this.containerWidth;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.horizontalDirection = this.direction.left;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.start = function () {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.container.show();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var me = this;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.interval = setInterval(function () {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; me.changePos();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, this.delay);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; debugger&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.start();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;})(jQuery)&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://files.cnblogs.com/huazai/jquery.floatAD.zip" title="浮动广告"&gt;浮动广告&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/huazai/aggbug/2309011.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/huazai/archive/2011/12/31/2309011.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/huazai/archive/2011/12/30/2307702.html</id><title type="text">jquery插件--回到顶部的功能</title><summary type="text">/** name: jquery.goTop.js** Copyright (c) 2011* $author: PoulXia$* $Date: 2011-12-30$* $Contact: xbh520@gmail.com$*//*** 一个基于jQuery的回到顶部功能的插件* 调用示例1:* $(document).ready(function () {* $.goTop({ renderTo: &amp;quot;middle2&amp;quot;});* });* 调用示例2:* $(document).ready(function () {* $.goTop({renderTo:&amp;quot;di</summary><published>2011-12-30T08:45:00Z</published><updated>2011-12-30T08:45:00Z</updated><author><name>PoulXia</name><uri>http://www.cnblogs.com/huazai/</uri></author><link rel="alternate" href="http://www.cnblogs.com/huazai/archive/2011/12/30/2307702.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazai/archive/2011/12/30/2307702.html"/><content type="html">&lt;div&gt;/*&lt;br /&gt;* name: jquery.goTop.js&lt;br /&gt;*&lt;br /&gt;* Copyright (c) 2011&lt;br /&gt;* $author: PoulXia$&lt;br /&gt;* $Date: 2011-12-30$&lt;br /&gt;* $Contact: xbh520@gmail.com$&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* 一个基于jQuery的回到顶部功能的插件&lt;br /&gt;* 调用示例1:&lt;br /&gt;* $(document).ready(function () {&lt;br /&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $.goTop({ renderTo: "middle2"});&lt;br /&gt;* });&lt;br /&gt;* 调用示例2:&lt;br /&gt;* $(document).ready(function () {&lt;br /&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $.goTop({renderTo:"divTop","top":"400px","right":"50px"});&lt;br /&gt;* });&lt;br /&gt;*/&lt;br /&gt;; (function ($) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $.extend(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goTop: function (config) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //默认配置&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var goTopConfig ={"top":"350px","right":"50px"};&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(var key in config){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var val = config[key];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(val){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goTopConfig[key] = val;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function checkScrollbar(el) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var top = $(document).scrollTop();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (top) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; el.show();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; el.hide();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var el = $("#"+goTopConfig.renderTo);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(el.length &amp;lt; 1){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert("调用出错,请参考调用示例!");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //默认样式&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; el.css("position","fixed").css("top",goTopConfig.top).css("right",goTopConfig.right);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //事件&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; el.click(function () {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(document).scrollTop(0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //检测是否显示&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; checkScrollbar(el);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(window).scroll(function () {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; checkScrollbar(el);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;})&lt;br /&gt;})(jQuery);&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;a title="插件下载" href="http://files.cnblogs.com/huazai/jquery.goTop.zip"&gt;&lt;/a&gt;&lt;a href="http://files.cnblogs.com/huazai/jquery.goTop.zip" title="插件下载"&gt;插件下载&lt;/a&gt;&lt;img src="http://www.cnblogs.com/huazai/aggbug/2307702.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/huazai/archive/2011/12/30/2307702.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/huazai/archive/2011/03/06/1971967.html</id><title type="text">Sql server2005中如何格式化时间日期</title><summary type="text">执行下面格式化时间和日期的T-SQL脚本,在数据库查询分析器中示范了SQL Server中的大多数可用的时间数据格式。首先我们开始转换sql的一些可用的时间格式。SELECT convert(varchar, getdate(), 100) -- mon dd yyyy hh:mmAM (or PM)-- Oct 2 2008 11:01AM SELECT convert(varchar, getdate(), 101) -- mm/dd/yyyy - 10/02/2008 SELECT convert(varchar, getdate(), 102) -- yyyy.mm.dd -- 200</summary><published>2011-03-05T16:27:00Z</published><updated>2011-03-05T16:27:00Z</updated><author><name>PoulXia</name><uri>http://www.cnblogs.com/huazai/</uri></author><link rel="alternate" href="http://www.cnblogs.com/huazai/archive/2011/03/06/1971967.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazai/archive/2011/03/06/1971967.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;执行下面格式化时间和日期的T-SQL脚本,在数据库查询分析器中示范了SQL Server中的大多数可用的时间数据格式。首先我们开始转换sql的一些可用的时间格式。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;pre &gt;&lt;span &gt;SELECT&lt;/span&gt; &lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;, getdate(), 100) &lt;span &gt;-- mon dd yyyy hh:mmAM (or PM)&lt;/span&gt;&#xD;
&lt;span &gt;-- Oct 2 2008 11:01AM &lt;/span&gt;&#xD;
&lt;span &gt;SELECT&lt;/span&gt; &lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;, getdate(), 101) &lt;span &gt;-- mm/dd/yyyy - 10/02/2008 &lt;/span&gt;&#xD;
&lt;span &gt;SELECT&lt;/span&gt; &lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;, getdate(), 102) &lt;span &gt;-- yyyy.mm.dd -- 2008.10.02 &lt;/span&gt;&#xD;
&lt;span &gt;SELECT&lt;/span&gt; &lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;, getdate(), 103) &lt;span &gt;-- dd/mm/yyyy&lt;/span&gt;&#xD;
&lt;span &gt;SELECT&lt;/span&gt; &lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;, getdate(), 104) &lt;span &gt;-- dd.mm.yyyy&lt;/span&gt;&#xD;
&lt;span &gt;SELECT&lt;/span&gt; &lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;, getdate(), 105) &lt;span &gt;-- dd-mm-yyyy&lt;/span&gt;&#xD;
&lt;span &gt;SELECT&lt;/span&gt; &lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;, getdate(), 106) &lt;span &gt;-- dd mon yyyy&lt;/span&gt;&#xD;
&lt;span &gt;SELECT&lt;/span&gt; &lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;, getdate(), 107) &lt;span &gt;-- mon dd, yyyy&lt;/span&gt;&#xD;
&lt;span &gt;SELECT&lt;/span&gt; &lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;, getdate(), 108) &lt;span &gt;-- hh:mm:ss&lt;/span&gt;&#xD;
&lt;span &gt;SELECT&lt;/span&gt; &lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;, getdate(), 109) &lt;span &gt;-- mon dd yyyy hh:mm:ss:mmmAM (or PM)&lt;/span&gt;&#xD;
&lt;span &gt;-- Oct 2 2008 11:02:44:013AM &lt;/span&gt;&#xD;
&lt;span &gt;SELECT&lt;/span&gt; &lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;, getdate(), 110) &lt;span &gt;-- mm-dd-yyyy&lt;/span&gt;&#xD;
&lt;span &gt;SELECT&lt;/span&gt; &lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;, getdate(), 111) &lt;span &gt;-- yyyy/mm/dd&lt;/span&gt;&#xD;
&lt;span &gt;SELECT&lt;/span&gt; &lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;, getdate(), 112) &lt;span &gt;-- yyyymmdd&lt;/span&gt;&#xD;
&lt;span &gt;SELECT&lt;/span&gt; &lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;, getdate(), 113) &lt;span &gt;-- dd mon yyyy hh:mm:ss:mmm&lt;/span&gt;&#xD;
&lt;span &gt;-- 02 Oct 2008 11:02:07:577 &lt;/span&gt;&#xD;
&lt;span &gt;SELECT&lt;/span&gt; &lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;, getdate(), 114) &lt;span &gt;-- hh:mm:ss:mmm(24h)&lt;/span&gt;&#xD;
&lt;span &gt;SELECT&lt;/span&gt; &lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;, getdate(), 120) &lt;span &gt;-- yyyy-mm-dd hh:mm:ss(24h)&lt;/span&gt;&#xD;
&lt;span &gt;SELECT&lt;/span&gt; &lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;, getdate(), 121) &lt;span &gt;-- yyyy-mm-dd hh:mm:ss.mmm&lt;/span&gt;&#xD;
&lt;span &gt;SELECT&lt;/span&gt; &lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;, getdate(), 126) &lt;span &gt;-- yyyy-mm-ddThh:mm:ss.mmm&lt;/span&gt;&#xD;
&lt;span &gt;-- 2008-10-02T10:52:47.513&lt;/span&gt;&#xD;
&lt;span &gt;-- 利用字符串函数创建不同的日期格式&lt;/span&gt;&#xD;
&lt;span &gt;SELECT&lt;/span&gt; replace(&lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;, getdate(), 111), &lt;span &gt;'/'&lt;/span&gt;, &lt;span &gt;' '&lt;/span&gt;) &lt;span &gt;-- yyyy mm dd&lt;/span&gt;&#xD;
&lt;span &gt;SELECT&lt;/span&gt; &lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;(7), getdate(), 126) &lt;span &gt;-- yyyy-mm&lt;/span&gt;&#xD;
&lt;span &gt;SELECT&lt;/span&gt; &lt;span &gt;right&lt;/span&gt;(&lt;span &gt;convert&lt;/span&gt;(&lt;span &gt;varchar&lt;/span&gt;, getdate(), 106), 8) &lt;span &gt;-- mon yyyy&lt;/span&gt;&#xD;
&lt;span &gt;go&lt;/span&gt;&#xD;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--通用的日期转换函数&lt;br /&gt;&lt;span &gt;CREATE&lt;/span&gt; &lt;span &gt;FUNCTION&lt;/span&gt; dbo.fnFormatDate (@Datetime DATETIME, @FormatMask &lt;span &gt;VARCHAR&lt;/span&gt;(32))&lt;br /&gt;&lt;span &gt;RETURNS&lt;/span&gt; &lt;span &gt;VARCHAR&lt;/span&gt;(32)&lt;br /&gt;&lt;span &gt;AS&lt;/span&gt;&#xD;
&lt;span &gt;BEGIN&lt;/span&gt;&#xD;
&lt;span &gt;DECLARE&lt;/span&gt; @StringDate &lt;span &gt;VARCHAR&lt;/span&gt;(32)&lt;br /&gt;&#xD;
&lt;span &gt;SET&lt;/span&gt; @StringDate = @FormatMask&lt;br /&gt;&#xD;
&lt;span &gt;IF&lt;/span&gt; (CHARINDEX (&lt;span &gt;'YYYY'&lt;/span&gt;,@StringDate) &amp;gt; 0)&lt;br /&gt;&#xD;
&lt;span &gt;SET&lt;/span&gt; @StringDate = REPLACE(@StringDate, &lt;span &gt;'YYYY'&lt;/span&gt;,DATENAME(YY, @Datetime))&lt;br /&gt;&#xD;
&lt;span &gt;IF&lt;/span&gt; (CHARINDEX (&lt;span &gt;'YY'&lt;/span&gt;,@StringDate) &amp;gt; 0)&lt;br /&gt;&#xD;
&lt;span &gt;SET&lt;/span&gt; @StringDate = REPLACE(@StringDate, &lt;span &gt;'YY'&lt;/span&gt;,&lt;span &gt;RIGHT&lt;/span&gt;(DATENAME(YY, @Datetime),2))&lt;br /&gt;&#xD;
&lt;span &gt;IF&lt;/span&gt; (CHARINDEX (&lt;span &gt;'Month'&lt;/span&gt;,@StringDate) &amp;gt; 0)&lt;br /&gt;&#xD;
&lt;span &gt;SET&lt;/span&gt; @StringDate = REPLACE(@StringDate, &lt;span &gt;'Month'&lt;/span&gt;,DATENAME(MM, @Datetime))&lt;br /&gt;&#xD;
&lt;span &gt;IF&lt;/span&gt; (CHARINDEX (&lt;span &gt;'MON'&lt;/span&gt;,@StringDate &lt;span &gt;COLLATE&lt;/span&gt; SQL_Latin1_General_CP1_CS_AS)&amp;gt;0)&lt;br /&gt;&#xD;
&lt;span &gt;SET&lt;/span&gt; @StringDate = REPLACE(@StringDate, &lt;span &gt;'MON'&lt;/span&gt;,&lt;span &gt;LEFT&lt;/span&gt;(&lt;span &gt;UPPER&lt;/span&gt;(DATENAME(MM, @Datetime)),3))&lt;br /&gt;&#xD;
&lt;span &gt;IF&lt;/span&gt; (CHARINDEX (&lt;span &gt;'Mon'&lt;/span&gt;,@StringDate) &amp;gt; 0)&lt;br /&gt;&#xD;
&lt;span &gt;SET&lt;/span&gt; @StringDate = REPLACE(@StringDate, &lt;span &gt;'Mon'&lt;/span&gt;,&lt;span &gt;LEFT&lt;/span&gt;(DATENAME(MM, @Datetime),3))&lt;br /&gt;&#xD;
&lt;span &gt;IF&lt;/span&gt; (CHARINDEX (&lt;span &gt;'MM'&lt;/span&gt;,@StringDate) &amp;gt; 0)&lt;br /&gt;&#xD;
&lt;span &gt;SET&lt;/span&gt; @StringDate = REPLACE(@StringDate, &lt;span &gt;'MM'&lt;/span&gt;,&lt;span &gt;RIGHT&lt;/span&gt;(&lt;span &gt;'0'&lt;/span&gt;+&lt;span &gt;CONVERT&lt;/span&gt;(&lt;span &gt;VARCHAR&lt;/span&gt;,DATEPART(MM, @Datetime)),2))&lt;br /&gt;&#xD;
&lt;span &gt;IF&lt;/span&gt; (CHARINDEX (&lt;span &gt;'M'&lt;/span&gt;,@StringDate) &amp;gt; 0)&lt;br /&gt;&#xD;
&lt;span &gt;SET&lt;/span&gt; @StringDate = REPLACE(@StringDate, &lt;span &gt;'M'&lt;/span&gt;,&lt;span &gt;CONVERT&lt;/span&gt;(&lt;span &gt;VARCHAR&lt;/span&gt;,DATEPART(MM, @Datetime)))&lt;br /&gt;&#xD;
&lt;span &gt;IF&lt;/span&gt; (CHARINDEX (&lt;span &gt;'DD'&lt;/span&gt;,@StringDate) &amp;gt; 0)&lt;br /&gt;&#xD;
&lt;span &gt;SET&lt;/span&gt; @StringDate = REPLACE(@StringDate, &lt;span &gt;'DD'&lt;/span&gt;,&lt;span &gt;right&lt;/span&gt;(&lt;span &gt;'0'&lt;/span&gt;+DATENAME(DD, @Datetime),2))&lt;br /&gt;&#xD;
&lt;span &gt;IF&lt;/span&gt; (CHARINDEX (&lt;span &gt;'D'&lt;/span&gt;,@StringDate) &amp;gt; 0)&lt;br /&gt;&#xD;
&lt;span &gt;SET&lt;/span&gt; @StringDate = REPLACE(@StringDate, &lt;span &gt;'D'&lt;/span&gt;,DATENAME(DD, @Datetime)) &lt;br /&gt;&#xD;
&lt;span &gt;RETURN&lt;/span&gt; @StringDate&lt;br /&gt;&#xD;
&lt;span &gt;END&lt;/span&gt;&#xD;
&lt;span &gt;GO&lt;/span&gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;pre &gt;&lt;/pre&gt;&#xD;
&lt;pre &gt;以前每次格式化日期都要通过字符串转换函数是转换,比较麻烦,像这样写成函数调用起来就方便多了:&lt;/pre&gt;&#xD;
&lt;pre &gt;示例:&lt;/pre&gt;&#xD;
&lt;pre &gt;SELECT dbo.fnFormatDate (getdate(), 'MM/DD/YYYY')&amp;nbsp; --03/06/2011&lt;br /&gt;&#xD;
&lt;br /&gt;&lt;/pre&gt;&#xD;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&#xD;
{&#xD;
font-size: small;&#xD;
color: black;&#xD;
font-family: consolas, "Courier New", courier, monospace;&#xD;
background-color: #ffffff;&#xD;
/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt&#xD;
{&#xD;
background-color: #f4f4f4;&#xD;
width: 100%;&#xD;
margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&#xD;
&lt;/style&gt;&#xD;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&#xD;
{&#xD;
font-size: small;&#xD;
color: black;&#xD;
font-family: consolas, "Courier New", courier, monospace;&#xD;
background-color: #ffffff;&#xD;
/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt&#xD;
{&#xD;
background-color: #f4f4f4;&#xD;
width: 100%;&#xD;
margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&#xD;
&lt;/style&gt;&#xD;
&lt;p&gt;&lt;font size="2" face="Consolas"&gt;参考资料:&lt;a title="http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/" href="http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/"&gt;http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&lt;strong&gt;版权声明：&lt;/strong&gt;允许转载，转载时请务必以超链接形式&#xD;
标明文章 &lt;a style="text-decoration: underline;" href="http://www.cnblogs.com/huazai/archive/2011/03/06/1971967.html" target="_blank"&gt;原始出处&lt;/a&gt; 、作者信息和本声明。否则将追究法律责任。 &lt;br /&gt;&#xD;
&lt;a href="http://www.cnblogs.com/huazai/archive/2011/03/06/1971967.html"&gt;http://www.cnblogs.com/huazai/archive/2011/03/06/1971967.html&lt;/a&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/huazai/aggbug/1971967.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/huazai/archive/2011/03/06/1971967.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/huazai/archive/2011/03/04/1970478.html</id><title type="text">[译]Silverlight中TreeView增删改查和拖放</title><summary type="text">来自微软的Amit Dey提供了一个非常好的Sliverlight代码示例来展示了在Silverlight中树控件的增、删、改、查和拖放的功能。在 Silverlight社区里面树控件的增、删、改、查是一个经常被问到的问题。但是我们收到还是有很多人请求得到这个代码示例。我们希望这个示例能够减少开发人员掌握这个典型的编程方案。感谢Amit！Silverlight树控件的增删改查http://deyamit.wordpress.com/2011/02/14/silverlight-treeview-control-with-crud/</summary><published>2011-03-03T16:59:00Z</published><updated>2011-03-03T16:59:00Z</updated><author><name>PoulXia</name><uri>http://www.cnblogs.com/huazai/</uri></author><link rel="alternate" href="http://www.cnblogs.com/huazai/archive/2011/03/04/1970478.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazai/archive/2011/03/04/1970478.html"/><content type="html">&lt;style&gt;&#xD;
.copy { BORDER-RIGHT: #bcbcbc 1px dashed; PADDING-RIGHT: 4px; BORDER-TOP: #bcbcbc 1px dashed; PADDING-LEFT: 4px; FONT-SIZE: 12px; PADDING-BOTTOM: 4px; MARGIN: 10px; BORDER-LEFT: #bcbcbc 1px dashed; COLOR: #888; LINE-HEIGHT: 20px; PADDING-TOP: 4px; BORDER-BOTTOM: #bcbcbc 1px dashed; LETTER-SPACING: 1px}&amp;#160;&lt;/style&gt;&#xD;
&lt;p&gt;原文地址:&lt;a title="http://deyamit.wordpress.com/2011/02/14/silverlight-treeview-control-with-crud/" href="http://deyamit.wordpress.com/2011/02/14/silverlight-treeview-control-with-crud/"&gt;http://deyamit.wordpress.com/2011/02/14/silverlight-treeview-control-with-crud/&lt;/a&gt; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;翻译地址:&lt;a title="http://blogs.msdn.com/b/codefx/archive/2011/02/15/silverlight-treeview-control-with-crud-and-drag-amp-drop.aspx" href="http://blogs.msdn.com/b/codefx/archive/2011/02/15/silverlight-treeview-control-with-crud-and-drag-amp-drop.aspx"&gt;http://blogs.msdn.com/b/codefx/archive/2011/02/15/silverlight-treeview-control-with-crud-and-drag-amp-drop.aspx&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;来自微软的Amit Dey提供了一个非常好的Sliverlight代码示例来展示了在Silverlight中树控件的增、删、改、查和拖放的功能。在Silverlight社区里面树控件的增、删、改、查是一个经常被问到的问题。但是我们收到还是有很多人请求得到这个代码示例。我们希望这个示例能够使开发人员轻松掌握这个典型的编程案例。&lt;/p&gt;&#xD;
&lt;p&gt;感谢Amit！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;Silverlight TreeView控件的增删改查&lt;/strong&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;这是一个Silverlight树控件增、删、改、查操作的示例。除了这个之外它还支持节点的拖放功能。这篇文章需要你最少对Silverlight和数据绑定有一点基本的了解。我们最后的输出效果会像这样显示：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/huazai/201103/201103040058313277.png"&gt;&lt;img title="blog" style="border: 0px none; display: inline;" alt="blog" src="http://images.cnblogs.com/cnblogs_com/huazai/201103/201103040058327247.png" border="0" height="206" width="136" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;数据&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;首先我们来看一下要绑定到&lt;strong&gt;TreeView&lt;/strong&gt;控件的数据结构&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Node&lt;/strong&gt;&lt;/em&gt;是要绑定到每一个&lt;strong&gt;TreeViewItem&lt;/strong&gt;的类&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Text&lt;/em&gt;&lt;/strong&gt;表示节点上的显示的数据&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Children&lt;/em&gt;&lt;/strong&gt;表示节点的子节点,注意&lt;strong&gt;&lt;em&gt;Node&lt;/em&gt;&lt;/strong&gt;类的继承&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;System.ComponentModel.INOtifyPropertyChanged&lt;/strong&gt;类按顺序保持UI在异步操作。阅读&lt;a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged%28v=vs.95%29.aspx" target="_blank"&gt;这篇文章&lt;/a&gt;可以更好的理解这个功能。&lt;/p&gt;&#xD;
&lt;p&gt;另外注意&lt;em&gt;&lt;strong&gt;Add&lt;/strong&gt;&lt;/em&gt;和&lt;em&gt;&lt;strong&gt;Delete&lt;/strong&gt;&lt;/em&gt;这两个帮助函数，分别用来添加和删除节点。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;&lt;strong&gt;using&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;System; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;strong&gt;using&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;System.ComponentModel; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;strong&gt;using&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;System.Collections.ObjectModel; &lt;/code&gt;&lt;/p&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;strong&gt;public&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;&lt;strong&gt;class&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;Node : INotifyPropertyChanged &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;{ &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;String text; &lt;/code&gt;&lt;/p&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;ObservableCollection&amp;lt;Node&amp;gt; children; &lt;/code&gt;&lt;/p&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;&lt;strong&gt;event&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;PropertyChangedEventHandler PropertyChanged;&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;ObservableCollection&amp;lt;Node&amp;gt; Children &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;{ &lt;/code&gt;&lt;code&gt;&lt;strong&gt;return&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;children; } &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;{ children = value; } &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;/p&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;String Text &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;{ &lt;/code&gt;&lt;code&gt;&lt;strong&gt;return&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;text; } &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;{ text = value; } &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;/p&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;Node(String text) &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Children = &lt;/code&gt;&lt;code&gt;&lt;strong&gt;new&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;ObservableCollection&amp;lt;Node&amp;gt;(); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Text = text; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;/p&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;&lt;strong&gt;void&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;Add(Node node) &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; children.Add(node); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NotifyPropertyChanged(&lt;/code&gt;&lt;code&gt;"Children"&lt;/code&gt;&lt;code&gt;); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;/p&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;&lt;strong&gt;void&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;Delete(Node node) &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; children.Remove(node); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NotifyPropertyChanged(&lt;/code&gt;&lt;code&gt;"Children"&lt;/code&gt;&lt;code&gt;); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;/p&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;&lt;strong&gt;void&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;NotifyPropertyChanged(String info) &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;(PropertyChanged != &lt;/code&gt;&lt;code&gt;&lt;strong&gt;null&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;) &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PropertyChanged(&lt;/code&gt;&lt;code&gt;&lt;strong&gt;this&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;, &lt;/code&gt;&lt;code&gt;&lt;strong&gt;new&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;PropertyChangedEventArgs(info)); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;} &lt;/code&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;strong&gt;XAML&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;&lt;/code&gt; &lt;/p&gt;&#xD;
&lt;p&gt;现在我们来看一下这个用户控件的XAML定义&lt;/p&gt;&#xD;
&lt;p&gt;第一步,我实现了一个右键菜单使增删改查更容易操作.你可以阅读&lt;a href="http://www.michaelsnow.com/2010/04/23/silverlight-tip-of-the-day-3-mouse-right-clicks/" target="_blank"&gt;这篇文章&lt;/a&gt;来学习右键菜单如何实现。&lt;/p&gt;&#xD;
&lt;p&gt;下一步,注意这两个&lt;em&gt;&lt;strong&gt;HierarchicalDataTemplate&lt;/strong&gt;，&lt;/em&gt;一个是&lt;em&gt;&lt;strong&gt;TreeViewItem &lt;/strong&gt;&lt;/em&gt;在查看状态(&lt;em&gt;&lt;strong&gt;TextBlock&lt;/strong&gt;&lt;/em&gt;的变化),另一个是编辑状态(&lt;em&gt;&lt;strong&gt;TextBox &lt;/strong&gt;&lt;/em&gt;的变化),&lt;em&gt;&lt;strong&gt;TextBlock&lt;/strong&gt;&lt;/em&gt;和&lt;em&gt;&lt;strong&gt;TextBox&lt;/strong&gt;&lt;/em&gt;绑定了&lt;em&gt;&lt;strong&gt;Node&lt;/strong&gt;&lt;/em&gt;的Text属性,我正在使用&lt;a href="http://silverlight.codeplex.com/" target="_blank"&gt;Silverlight Toolkit&lt;/a&gt;r的&lt;em&gt;&lt;strong&gt;TreeViewDragDropTarget&lt;/strong&gt;&lt;/em&gt;控件在父节点之间使用&lt;em&gt;&lt;strong&gt;TreeViewItems&lt;/strong&gt;&lt;/em&gt;进行拖放。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;UserControl&lt;/strong&gt;&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;xmlns:sdk&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk&lt;/a&gt;"&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;x:Class&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"CSSLTreeViewCRUDDragDrop.TreeViewCrudDragDrop"&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;xmlns&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/a&gt;"&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;xmlns:x&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/a&gt;"&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;xmlns:d&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"&lt;a href="http://schemas.microsoft.com/expression/blend/2008"&gt;http://schemas.microsoft.com/expression/blend/2008&lt;/a&gt;"&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;xmlns:mc&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"&lt;a href="http://schemas.openxmlformats.org/markup-compatibility/2006"&gt;http://schemas.openxmlformats.org/markup-compatibility/2006&lt;/a&gt;"&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;mc:Ignorable&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"d"&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;d:DesignHeight&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"300"&lt;/code&gt; &lt;code&gt;d:DesignWidth&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"400"&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;xmlns:toolkit&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit"&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;xmlns:mswindows&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"clr-namespace:Microsoft.Windows;assembly=System.Windows.Controls.Toolkit"&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;UserControl.Resources&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;!-- Template for Edit mode of TreeViewItem --&amp;gt;&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;sdk:HierarchicalDataTemplate&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;x:Key&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"TreeViewMainEditTemplate"&lt;/code&gt; &lt;code&gt;ItemsSource&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"{Binding Children}"&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;TextBox&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;Text&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"{Binding Text,Mode=TwoWay}"&lt;/code&gt; &lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;/&lt;/code&gt;&lt;code&gt;&lt;strong&gt;TextBox&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;/&lt;/code&gt;&lt;code&gt;&lt;strong&gt;sdk:HierarchicalDataTemplate&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;!-- Template for Read mode for TreeViewItem --&amp;gt;&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;sdk:HierarchicalDataTemplate&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;x:Key&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"TreeViewMainReadTemplate"&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;ItemsSource&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"{Binding Children}"&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;TextBlock&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;Text&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"{Binding Text,Mode=TwoWay}"&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;MouseRightButtonDown&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"TreeViewMain_MouseRightButtonDown"&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;MouseRightButtonUp&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"TreeViewMain_MouseRightButtonUp"&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;MouseLeftButtonDown&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"TreeViewMain_MouseLeftButtonDown"&lt;/code&gt; &lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;/&lt;/code&gt;&lt;code&gt;&lt;strong&gt;TextBlock&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;/&lt;/code&gt;&lt;code&gt;&lt;strong&gt;sdk:HierarchicalDataTemplate&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;/&lt;/code&gt;&lt;code&gt;&lt;strong&gt;UserControl.Resources&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;Grid&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;x:Name&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"LayoutRoot"&lt;/code&gt; &lt;code&gt;Background&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"White"&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;!-- TreeViewDragDropTarget from Toolkit to add DragAndDrop feature --&amp;gt;&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;toolkit:TreeViewDragDropTarget&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;AllowDrop&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"True"&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;!-- Custom TreeView&amp;nbsp; --&amp;gt;&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;sdk:TreeView&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;Name&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"TreeViewMain"&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;ItemTemplate&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"{StaticResource TreeViewMainReadTemplate}"&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;MouseRightButtonDown&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"TreeViewMain_MouseRightButtonDown"&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;MouseRightButtonUp&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"TreeViewMain_MouseRightButtonUp"&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;MouseLeftButtonDown&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"TreeViewMain_MouseLeftButtonDown"&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;Width&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"400"&lt;/code&gt; &lt;code&gt;Height&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"400"&lt;/code&gt; &lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;/&lt;/code&gt;&lt;code&gt;&lt;strong&gt;sdk:TreeView&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;/&lt;/code&gt;&lt;code&gt;&lt;strong&gt;toolkit:TreeViewDragDropTarget&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;!-- Context Menu --&amp;gt;&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;Canvas&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;Popup&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;Name&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"ContextMenu"&lt;/code&gt; &lt;code&gt;Visibility&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"Collapsed"&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;Border&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;BorderThickness&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"1"&lt;/code&gt; &lt;code&gt;BorderBrush&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"Black"&lt;/code&gt; &lt;code&gt;Background&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"White"&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;StackPanel&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;HyperlinkButton&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;Content&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"Add"&lt;/code&gt; &lt;code&gt;Name&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"AddButton"&lt;/code&gt; &lt;code&gt;Click&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"AddButton_Click"&lt;/code&gt; &lt;code&gt;/&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;HyperlinkButton&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;Content&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"Edit"&lt;/code&gt; &lt;code&gt;Name&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"EditButton"&lt;/code&gt; &lt;code&gt;Click&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"EditButton_Click"&lt;/code&gt;&lt;code&gt;/&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;HyperlinkButton&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;Content&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"Delete"&lt;/code&gt; &lt;code&gt;Name&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"DeleteButton"&lt;/code&gt; &lt;code&gt;Click&lt;/code&gt;&lt;code&gt;=&lt;/code&gt;&lt;code&gt;"DeleteButton_Click"&lt;/code&gt;&lt;code&gt;/&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;/&lt;/code&gt;&lt;code&gt;&lt;strong&gt;StackPanel&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;/&lt;/code&gt;&lt;code&gt;&lt;strong&gt;Border&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;/&lt;/code&gt;&lt;code&gt;&lt;strong&gt;Popup&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;/&lt;/code&gt;&lt;code&gt;&lt;strong&gt;Canvas&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;/&lt;/code&gt;&lt;code&gt;&lt;strong&gt;Grid&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&amp;lt;/&lt;/code&gt;&lt;code&gt;&lt;strong&gt;UserControl&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;&lt;strong&gt;后台代码&lt;/strong&gt;&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;现在让我们先睹为快看一下用户控件的后台代码：&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;第一步,&lt;/code&gt;&lt;code&gt;鼠标的事件处理程序,&lt;em&gt;&lt;strong&gt;TreeViewItem&lt;/strong&gt;&lt;/em&gt;的&lt;em&gt;&lt;strong&gt;MouseRightButtonUp&lt;/strong&gt;&lt;/em&gt;事件做两件事情,给选定的节点&lt;strong&gt;&lt;em&gt;selectedNode&lt;/em&gt;&lt;/strong&gt;分派指定的&lt;em&gt;&lt;strong&gt;TreeViewItem&lt;/strong&gt;&lt;/em&gt;数据上下文。&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;第二步,弹出右键菜单,选中节点&lt;em&gt;&lt;strong&gt;selectedNode&lt;/strong&gt;&lt;/em&gt;的信息是必需的,它作为引用被用来编辑&lt;em&gt;&lt;strong&gt;TreeViewItem&lt;/strong&gt;、&lt;/em&gt;添加子节点到&lt;strong&gt;&lt;em&gt;TreeViewItem&lt;/em&gt;&lt;/strong&gt;和删除&lt;em&gt;&lt;strong&gt;TreeViewItem&lt;/strong&gt;&lt;/em&gt;。&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;AddButton_Click&lt;/em&gt;&lt;/strong&gt;事件处理程序,创建一个新的节点并当作节节点添加到选中的节点&lt;em&gt;&lt;strong&gt;selecteNode&lt;/strong&gt;&lt;/em&gt;的子节点下面。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;EditButton_Click&lt;/strong&gt;&lt;/em&gt;事件处理程序,改变选中节点的模板为编辑状态&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;DeleteButton_Click&lt;/strong&gt;&lt;/em&gt;事件处理程序,首先确定&lt;em&gt;&lt;strong&gt;TreeViewItem&lt;/strong&gt;&lt;/em&gt;与选中的节点&lt;em&gt;&lt;strong&gt;selectedNode&lt;/strong&gt;&lt;/em&gt;关联,查找它的父节点,从父节点中删除选中的节点&lt;em&gt;&lt;strong&gt;selectedNode。&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;strong&gt;using&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;System; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;strong&gt;using&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;System.Collections.Generic; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;strong&gt;using&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;System.Linq; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;strong&gt;using&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;System.Windows; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;strong&gt;using&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;System.Windows.Controls; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;strong&gt;using&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;System.Windows.Input; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;strong&gt;using&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;System.Collections.ObjectModel; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;code&gt;&lt;strong&gt;namespace&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;CSSLTreeViewCRUDDragDrop &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;{ &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;&lt;strong&gt;partial&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;&lt;strong&gt;class&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;TreeViewCrudDragDrop : UserControl &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ObservableCollection&amp;lt;Node&amp;gt; objectTree; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node selectedNode; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;List&amp;lt;Node&amp;gt; Items &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;/strong&gt;&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;objectTree.ToList&amp;lt;Node&amp;gt;(); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;/strong&gt;&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objectTree = &lt;/code&gt;&lt;code&gt;&lt;strong&gt;new&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;ObservableCollection&amp;lt;Node&amp;gt;(value);&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TreeViewMain.ItemsSource = objectTree; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;TreeViewCrudDragDrop() &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent(); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objectTree = &lt;/code&gt;&lt;code&gt;&lt;strong&gt;new&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;ObservableCollection&amp;lt;Node&amp;gt;(); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TreeViewMain.ItemsSource = objectTree; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;&lt;strong&gt;void&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;TreeViewMain_MouseRightButtonDown(&lt;/code&gt;&lt;code&gt;&lt;strong&gt;object&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;sender, MouseButtonEventArgs e) &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DisableEditForSelectedItem(); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.Handled = &lt;/code&gt;&lt;code&gt;&lt;strong&gt;true&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;/p&gt;&#xD;
&lt;font face="Courier New"&gt;&lt;/font&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;&lt;strong&gt;void&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;TreeViewMain_MouseRightButtonUp(&lt;/code&gt;&lt;code&gt;&lt;strong&gt;object&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;sender, MouseButtonEventArgs e) &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DisableEditForSelectedItem(); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;(sender &lt;/code&gt;&lt;code&gt;&lt;strong&gt;is&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;TextBlock) &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selectedNode = (Node)((sender &lt;/code&gt;&lt;code&gt;&lt;strong&gt;as&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;TextBlock).DataContext); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/strong&gt;&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selectedNode = &lt;/code&gt;&lt;code&gt;&lt;strong&gt;null&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowContextMenu(e); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;/p&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;&lt;strong&gt;void&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;TreeViewMain_MouseLeftButtonDown(&lt;/code&gt;&lt;code&gt;&lt;strong&gt;object&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;sender, MouseButtonEventArgs e) &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DisableEditForSelectedItem(); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HideContextMenu(); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;&lt;strong&gt;void&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;AddButton_Click(&lt;/code&gt;&lt;code&gt;&lt;strong&gt;object&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;sender, RoutedEventArgs e) &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node newNode = &lt;/code&gt;&lt;code&gt;&lt;strong&gt;new&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;Node(&lt;/code&gt;&lt;code&gt;"New Node"&lt;/code&gt;&lt;code&gt;); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;(selectedNode != &lt;/code&gt;&lt;code&gt;&lt;strong&gt;null&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;) &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selectedNode.Add(newNode); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/strong&gt;&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;(objectTree != &lt;/code&gt;&lt;code&gt;&lt;strong&gt;null&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;) &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objectTree.Add(newNode); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/strong&gt;&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objectTree = &lt;/code&gt;&lt;code&gt;&lt;strong&gt;new&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;ObservableCollection&amp;lt;Node&amp;gt;(); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objectTree.Add(newNode); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HideContextMenu(); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;&lt;strong&gt;void&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;EditButton_Click(&lt;/code&gt;&lt;code&gt;&lt;strong&gt;object&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;sender, RoutedEventArgs e) &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EnalbleEditForSelectedItem(); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TreeViewItem selectedTreeViewItem = &lt;/code&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TreeViewExtensions.GetContainerFromItem(TreeViewMain, selectedNode); &lt;/code&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HideContextMenu(); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;&lt;strong&gt;void&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;DeleteButton_Click(&lt;/code&gt;&lt;code&gt;&lt;strong&gt;object&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;sender, RoutedEventArgs e) &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TreeViewItem selectedTreeViewItem = &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TreeViewExtensions.GetContainerFromItem(TreeViewMain, selectedNode); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;(selectedTreeViewItem != &lt;/code&gt;&lt;code&gt;&lt;strong&gt;null&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;) &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TreeViewItem selectedTreeViewItemParent = &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TreeViewExtensions.GetParentTreeViewItem(selectedTreeViewItem); &lt;/code&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;(selectedTreeViewItemParent != &lt;/code&gt;&lt;code&gt;&lt;strong&gt;null&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;) &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Node seleactedParentNode = (Node)selectedTreeViewItemParent.DataContext; &lt;/code&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; seleactedParentNode.Delete(selectedNode); &lt;/code&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/strong&gt;&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objectTree.Remove(selectedNode); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HideContextMenu(); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;&lt;strong&gt;void&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;ShowContextMenu(MouseButtonEventArgs e) &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.Handled = &lt;/code&gt;&lt;code&gt;&lt;strong&gt;true&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Point p = e.GetPosition(&lt;/code&gt;&lt;code&gt;&lt;strong&gt;this&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ContextMenu.Visibility = Visibility.Visible; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ContextMenu.IsOpen = &lt;/code&gt;&lt;code&gt;&lt;strong&gt;true&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ContextMenu.SetValue(Canvas.LeftProperty, (&lt;/code&gt;&lt;code&gt;&lt;strong&gt;double&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;)p.X); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ContextMenu.SetValue(Canvas.TopProperty, (&lt;/code&gt;&lt;code&gt;&lt;strong&gt;double&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;)p.Y); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;&lt;strong&gt;void&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;HideContextMenu() &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ContextMenu.Visibility = Visibility.Collapsed; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ContextMenu.IsOpen = &lt;/code&gt;&lt;code&gt;&lt;strong&gt;false&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;&lt;strong&gt;void&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;EnalbleEditForSelectedItem() &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;(selectedNode != &lt;/code&gt;&lt;code&gt;&lt;strong&gt;null&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;) &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetTemplateForSelectedItem(&lt;/code&gt;&lt;code&gt;"TreeViewMainEditTemplate"&lt;/code&gt;&lt;code&gt;); &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;&lt;strong&gt;void&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;DisableEditForSelectedItem() &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;(selectedNode != &lt;/code&gt;&lt;code&gt;&lt;strong&gt;null&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;) &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetTemplateForSelectedItem(&lt;/code&gt;&lt;code&gt;"TreeViewMainReadTemplate"&lt;/code&gt;&lt;code&gt;); &lt;/code&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selectedNode = &lt;/code&gt;&lt;code&gt;&lt;strong&gt;null&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;; &lt;/code&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;&lt;strong&gt;void&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;SetTemplateForSelectedItem(String templateName) &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HierarchicalDataTemplate hdt = (HierarchicalDataTemplate)Resources[templateName]; &lt;/code&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TreeViewItem selectedTreeViewItem = &lt;/code&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TreeViewExtensions.GetContainerFromItem(TreeViewMain, selectedNode); &lt;/code&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/strong&gt;&lt;/code&gt; &lt;code&gt;(selectedTreeViewItem != &lt;/code&gt;&lt;code&gt;&lt;strong&gt;null&lt;/strong&gt;&lt;/code&gt;&lt;code&gt;) &lt;/code&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selectedTreeViewItem.HeaderTemplate = hdt; &lt;/code&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;br /&gt;&#xD;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/code&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;code&gt;}&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;这样就完成了。&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;引用：&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;&lt;a href="http://www.michaelsnow.com/2010/04/23/silverlight-tip-of-the-day-3-mouse-right-clicks/" target="_blank"&gt;MichaelSnow : Silverlight Tip of the Day #3 &amp;#8211; Mouse Right Clicks&lt;/a&gt;&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc278072%28v=vs.95%29.aspx" target="_blank"&gt;MSDN : DataBinding Silverlight&lt;/a&gt;&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;&lt;a href="http://timheuer.com/bhttp://timheuer.com/blog/archive/2009/10/19/silverlight-toolkit-adds-drag-drop-support.aspx" target="_blank"&gt;Codeplex : Silverlight Toolkit&lt;/a&gt;&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;code&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged%28v=vs.95%29.aspx" target="_blank"&gt;MSDN : INotifyPropertyChanged Interface&lt;/a&gt;&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&lt;strong&gt;版权声明：&lt;/strong&gt;原创作品，允许转载，转载时请务必以超链接形式标明文章 &lt;a style="text-decoration: underline;" href="http://www.cnblogs.com/huazai/archive/2011/03/04/1970478.html" target="_blank"&gt;原始出处&lt;/a&gt; 、作者信息和本声明。否则将追究法律责任。 &lt;br /&gt;&lt;a href="http://www.cnblogs.com/huazai/archive/2011/03/04/1970478.html"&gt;http://www.cnblogs.com/huazai/archive/2011/03/04/1970478.html&lt;/a&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/huazai/aggbug/1970478.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/huazai/archive/2011/03/04/1970478.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/huazai/archive/2011/02/28/1967507.html</id><title type="text">介绍一个开源的ORM--ORM.NET</title><summary type="text">ORM.NET是一个开源的.net对象关系映射的代码生成工具,它根据数据库结构生成一个数据实体层,为每一个表生成一个对应的类,为表的每一个字段生成类的一个属性。  通过生成的DataManager对象，不用使用存储过程和嵌入SQL脚本就可以很容易根据复杂的条件检索数据，除此之外，数据更新，插入和删除可以通过一次调用就可以对数据进行保存。</summary><published>2011-02-28T14:39:00Z</published><updated>2011-02-28T14:39:00Z</updated><author><name>PoulXia</name><uri>http://www.cnblogs.com/huazai/</uri></author><link rel="alternate" href="http://www.cnblogs.com/huazai/archive/2011/02/28/1967507.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazai/archive/2011/02/28/1967507.html"/><content type="html">&lt;p&gt;一.介绍&lt;/p&gt;&#xD;
&lt;p&gt;ORM.NET是一个开源的.net对象关系映射的代码生成工具,它根据数据库结构生成一个数据实体层,为每一个表生成一个对应的类,为表的每一个字段生成类的一个属性。&lt;/p&gt;&#xD;
&lt;p&gt;通过生成的DataManager对象，不用使用存储过程和嵌入SQL脚本就可以很容易根据复杂的条件检索数据，除此之外，数据更新，插入和删除可以通过一次调用就可以对数据进行保存。&lt;/p&gt;&#xD;
&lt;p&gt;官网地址:&lt;a title="http://orm-net.sourceforge.net/" href="http://orm-net.sourceforge.net/"&gt;http://orm-net.sourceforge.net/&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;下载:&lt;a title="http://sourceforge.net/projects/orm-net/files/ORM.NET/" href="http://sourceforge.net/projects/orm-net/files/ORM.NET/"&gt;http://sourceforge.net/projects/orm-net/files/ORM.NET/&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;二.演示&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a title="http://orm-net.sourceforge.net/tour.html" href="http://orm-net.sourceforge.net/tour.html"&gt;http://orm-net.sourceforge.net/tour.html&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;三.官方提供的使用示例&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;//根据数据库连接字符串创建一个数据管理对象&lt;/p&gt;&#xD;
&lt;p&gt;DataManager data = new DataManager(Config.Dsn);&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;//获取一个Customers集合并检索关联的Order表&lt;/p&gt;&#xD;
&lt;p&gt;CustomersCollection customers = data.GetCustomersCollection（FetchPath.Customers.Orders）;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;//根据ContactName进行降序排序&lt;/p&gt;&#xD;
&lt;p&gt;customers.SortByContactName(SortDirection.Descending);&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;//更新Customers表中CustomerID="ALFKI"的记录,把ContactName修改为"Peach"&lt;/p&gt;&#xD;
&lt;p&gt;customers.FindByCusmerID("ALFKI").ContactName = "Peach";&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;//创建一个新的customer对象&lt;/p&gt;&#xD;
&lt;p&gt;Customers customer = data.NewCustomers("Tes7","Orero software");&lt;/p&gt;&#xD;
&lt;p&gt;customer.ContactName = "Tech Support";&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;//创建新的关联对象&lt;/p&gt;&#xD;
&lt;p&gt;Orders order = customer.NewOrders();&lt;/p&gt;&#xD;
&lt;p&gt;order.OrderDate = DateTime.Now;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;//通知DataManager更新数据库一直持续到所有的操作完成&lt;/p&gt;&#xD;
&lt;p&gt;data.CommitAll();&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;说明：我只是翻译过来跟大家分享一下这个ORM，让大家多了解一下，具体我没在项目中用过也没测试过，个人觉得这样的ORM只适合做网站和小项目可能提高开发效率。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;div &gt;&lt;strong&gt;版权声明：&lt;/strong&gt;原创作品，允许转载，转载时请务必以超链接形式&#xD;
标明文章 &lt;a style="text-decoration: underline;" href="http://www.cnblogs.com/huazai/archive/2011/02/28/1967507.html" target="_blank"&gt;原始出处&lt;/a&gt; 、作者信息和本声明。否则将追究法律责任。 &lt;br /&gt;&#xD;
&lt;a href="http://www.cnblogs.com/huazai/archive/2011/02/28/1967507.html"&gt;http://www.cnblogs.com/huazai/archive/2011/02/28/1967507.html&lt;/a&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;img src="http://www.cnblogs.com/huazai/aggbug/1967507.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/huazai/archive/2011/02/28/1967507.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/huazai/archive/2010/01/31/1660422.html</id><title type="text">SQL Server中的行列倒置技巧</title><summary type="text">行列倒置在sql server中是一种很常见的技巧，在做应用系统的时候，经常需要做一些统计功能避免不了使用行列倒置这个技巧，我小小的做了一下总结：第一种：sql server 2000中使用case进行行列倒置create table RowCellConvertTest(grade varchar(50),sex varchar(50),studentCount int)goinsert int...</summary><published>2010-01-31T05:09:00Z</published><updated>2010-01-31T05:09:00Z</updated><author><name>PoulXia</name><uri>http://www.cnblogs.com/huazai/</uri></author><link rel="alternate" href="http://www.cnblogs.com/huazai/archive/2010/01/31/1660422.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazai/archive/2010/01/31/1660422.html"/></entry><entry><id>http://www.cnblogs.com/huazai/archive/2009/11/04/1596210.html</id><title type="text">FCK编辑器焦点问题</title><summary type="text">在使用FCK编辑器的时候，我们经常会进行对FCK编辑器的赋值操作，赋值的操作有两个关键的地方，如果不清楚的话出了错还百思不得其解：第一个问题：廷时处理在页面刚加载的时候对FCK赋值，比如在信息列表中选中一条信息进行查看或修改的时候，信息添加的时候用FCK编辑的，加载页面的时候会加载FCK编辑器，此时会报出一个错误:"FCKeditorAPI undefined",这是为什么呢，因为页面加载对FCK...</summary><published>2009-11-04T13:06:00Z</published><updated>2009-11-04T13:06:00Z</updated><author><name>PoulXia</name><uri>http://www.cnblogs.com/huazai/</uri></author><link rel="alternate" href="http://www.cnblogs.com/huazai/archive/2009/11/04/1596210.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazai/archive/2009/11/04/1596210.html"/></entry><entry><id>http://www.cnblogs.com/huazai/archive/2009/08/30/1556866.html</id><title type="text">KeyedCollection&amp;lt;TKey, TItem&amp;gt;与IDictionary&amp;lt;TKey, TValue&amp;gt;的区别</title><summary type="text">Everybody都知道IDictionary&amp;lt;TKey, TValue&amp;gt;表示键/值对的泛型集合，是键/值对的泛型集合的基接口，典型的应用就是字典类Dictionary，但清楚KeyedCollection&amp;lt;TKey, TItem&amp;gt;的应用吗，与IDictionary又有什么区别呢？ 它提供集合键嵌入在值中的集合的抽象基类,是基于 IList&amp;lt;T&amp;gt; 泛型接口的集合...</summary><published>2009-08-30T13:59:00Z</published><updated>2009-08-30T13:59:00Z</updated><author><name>PoulXia</name><uri>http://www.cnblogs.com/huazai/</uri></author><link rel="alternate" href="http://www.cnblogs.com/huazai/archive/2009/08/30/1556866.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazai/archive/2009/08/30/1556866.html"/></entry><entry><id>http://www.cnblogs.com/huazai/archive/2009/08/07/1541453.html</id><title type="text">利用XML FOR PATH 合并分组信息</title><summary type="text">最近做统计功能的时候经常需要用到合并分组内容，如果只根据分组统计数值用聚合函数就可以了，如果处理分组后的字符串列呢，我们就必须要自己写函数处理了，比如有这样的数据信息：现在要对上面数据进行分组，获取统计结果：实现方式一： [代码]实现方式二：利用 T-SQL 技术生成 XML 的方法[代码]呵呵，这样就是不是简单多了，不用再写一个函数去处理这么麻烦了。扩展：For XML Path1.在该 XML...</summary><published>2009-08-07T11:42:00Z</published><updated>2009-08-07T11:42:00Z</updated><author><name>PoulXia</name><uri>http://www.cnblogs.com/huazai/</uri></author><link rel="alternate" href="http://www.cnblogs.com/huazai/archive/2009/08/07/1541453.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazai/archive/2009/08/07/1541453.html"/></entry><entry><id>http://www.cnblogs.com/huazai/archive/2009/05/14/1457145.html</id><title type="text">JavaScript创建对象的几种方式</title><summary type="text">潜意识里，JavaScript不能算是面向对象的语言,要算也只能说是趋向面向对象的一种语言，至少它不能很好的吻合面向对象最基本的三大特性(继承、封装、多态),当然有很多人就认为JavaScript是面向对象语言,好像也说得没错，因为面向对象也能在JavaScript中实现,比如说继承、封装吧也都可以在JavaScript中实现,但是实现方便吗?所以我觉得很疑惑。看到网上有一网友评价的很好,"面向对...</summary><published>2009-05-14T14:19:00Z</published><updated>2009-05-14T14:19:00Z</updated><author><name>PoulXia</name><uri>http://www.cnblogs.com/huazai/</uri></author><link rel="alternate" href="http://www.cnblogs.com/huazai/archive/2009/05/14/1457145.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazai/archive/2009/05/14/1457145.html"/></entry></feed>
