http://www.cnblogs.com/Jax/category/88715.html
http://archive.msdn.microsoft.com/wpfsamples (常用实例)
http://msdn.microsoft.com/zh-cn/library/ms752299.aspx
http://www.cnblogs.com/jv9/category/167735.html (强悍学习站)
//---------------------------------------------
一个通用的WPF值转换器
在WPF中应用数据绑定时经常需要做一些简单的逻辑判断。
比如ViewModel中有一个HasError(布尔值)的属性表示是否有错误。我需要将它绑定于Button的IsEnable属性上,即:当没有错误时Button可用。这时就需要将HasError取反。WPF默认的绑定引擎是不支持的。
还有一种情况比如ViewModel中有一个Sex(int值)的属性表示性别,我需要将它绑定到TextBlock上,当值为1时显示男,值为2时显示女。WPF默认绑定也是不支持这种判断的。
于是一个通用的值转换器就诞生了,用法如下:
IsReverse参数表示是否取返,如果转换的值为true则变为false,反之亦然。
Alias参数表示将值映射为字符串,other表示当遇到没有指定的值时显示的文本
另外bool to Visibility的转换可以自动进行,不需要指定参数。
有意见欢迎指正
完整代码如下:
View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Data;
using System.Windows;
namespace MoodSunshiny.WPF.Converter
{
///
/// 一个通用的类型转换器,可以提供更多转换控制参数
///
public class GenericTypeConverter : IValueConverter
{
///
/// 是否反转转换源参数值
/// 仅对bool类型的值有效
///
private bool IsReverse { get; set; }
///
/// 用于将转换结果映射为其它字符串
/// 例如:Alias=True:是|False:否
///
private Dictionary< object, string> Alias { get; set; }
///
/// 解析转换参数
///
private void AnalyseConvertParameter( string convertParameter)
{
/* 设置参数默认值 */
IsReverse = false;
Alias = null;
if (! string.IsNullOrEmpty(convertParameter))
{
var pkvs = convertParameter.Split( new char[] { ' , ' }, StringSplitOptions.RemoveEmptyEntries);
foreach ( var pkv in pkvs)
{
var pkvo = pkv.Split( new char[] { ' = ' }, StringSplitOptions.RemoveEmptyEntries);
if (pkvo.Length != 2)
throw new NotSupportedException( " 不支持设置: " + pkv);
var pk = pkvo[ 0].Trim();
var pv = pkvo[ 1].Trim();
switch (pk)
{
case " IsReverse ":
bool b;
if (! bool.TryParse(pv, out b))
throw new NotSupportedException( " 参数取值错误: " + pkv);
else
IsReverse = b;
break;
case " Alias ":
{
Alias = new Dictionary< object, string>();
var dfkvs = pv.Split( new char[] { ' | ' }, StringSplitOptions.RemoveEmptyEntries);
foreach ( var dfkv in dfkvs)
{
var dfkvo = dfkv.Split( new char[] { ' : ' }, StringSplitOptions.RemoveEmptyEntries);
if (dfkvo.Length != 2)
throw new NotSupportedException( " 不支持设置: " + dfkvo);
var dfk = dfkvo[ 0].Trim();
var dfv = dfkvo[ 1].Trim();
object oKey = null;
int i;
if (dfk.Equals( " true ", StringComparison.OrdinalIgnoreCase))
oKey = true;
else if (dfk.Equals( " false ", StringComparison.OrdinalIgnoreCase))
oKey = false;
else if (dfk.Equals( " other ", StringComparison.OrdinalIgnoreCase))
oKey = " other ";
else if ( int.TryParse(dfk, out i))
oKey = i;
else
throw new NotSupportedException( " 参数取值错误: " + dfkv);
Alias[oKey] = dfv;
}
}
break;
default:
throw new NotSupportedException( " 不支持的参数名: " + pk);
}
}
}
}
public object Convert( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
AnalyseConvertParameter(parameter as string);
try
{
var sourceType = value.GetType();
if (IsReverse && sourceType == typeof( bool))
value = !(( bool)value);
if (targetType == typeof( string))
{
if (Alias != null && Alias.ContainsKey(value))
return Alias[value];
else if (Alias != null && Alias.ContainsKey( " other "))
return Alias[ " other "];
else
return value == null ? "" : value.ToString();
}
if (targetType == typeof( bool))
{
if (sourceType == typeof(Visibility))
return (Visibility)value == Visibility.Visible;
}
else if (targetType.IsEnum)
{
if (sourceType == typeof( bool) && targetType == typeof(Visibility))
{
return ( bool)value ? Visibility.Visible : Visibility.Collapsed;
}
else
{
return Enum.Parse(targetType, value.ToString(), true);
}
}
else
{
return System.Convert.ChangeType(value, targetType);
}
return System.Convert.ChangeType(value, targetType);
}
catch
{
return null;
}
}
public object ConvertBack( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return Convert(value, targetType, parameter, culture);
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Data;
using System.Windows;
namespace MoodSunshiny.WPF.Converter
{
///
/// 一个通用的类型转换器,可以提供更多转换控制参数
///
public class GenericTypeConverter : IValueConverter
{
///
/// 是否反转转换源参数值
/// 仅对bool类型的值有效
///
private bool IsReverse { get; set; }
///
/// 用于将转换结果映射为其它字符串
/// 例如:Alias=True:是|False:否
///
private Dictionary< object, string> Alias { get; set; }
///
/// 解析转换参数
///
private void AnalyseConvertParameter( string convertParameter)
{
/* 设置参数默认值 */
IsReverse = false;
Alias = null;
if (! string.IsNullOrEmpty(convertParameter))
{
var pkvs = convertParameter.Split( new char[] { ' , ' }, StringSplitOptions.RemoveEmptyEntries);
foreach ( var pkv in pkvs)
{
var pkvo = pkv.Split( new char[] { ' = ' }, StringSplitOptions.RemoveEmptyEntries);
if (pkvo.Length != 2)
throw new NotSupportedException( " 不支持设置: " + pkv);
var pk = pkvo[ 0].Trim();
var pv = pkvo[ 1].Trim();
switch (pk)
{
case " IsReverse ":
bool b;
if (! bool.TryParse(pv, out b))
throw new NotSupportedException( " 参数取值错误: " + pkv);
else
IsReverse = b;
break;
case " Alias ":
{
Alias = new Dictionary< object, string>();
var dfkvs = pv.Split( new char[] { ' | ' }, StringSplitOptions.RemoveEmptyEntries);
foreach ( var dfkv in dfkvs)
{
var dfkvo = dfkv.Split( new char[] { ' : ' }, StringSplitOptions.RemoveEmptyEntries);
if (dfkvo.Length != 2)
throw new NotSupportedException( " 不支持设置: " + dfkvo);
var dfk = dfkvo[ 0].Trim();
var dfv = dfkvo[ 1].Trim();
object oKey = null;
int i;
if (dfk.Equals( " true ", StringComparison.OrdinalIgnoreCase))
oKey = true;
else if (dfk.Equals( " false ", StringComparison.OrdinalIgnoreCase))
oKey = false;
else if (dfk.Equals( " other ", StringComparison.OrdinalIgnoreCase))
oKey = " other ";
else if ( int.TryParse(dfk, out i))
oKey = i;
else
throw new NotSupportedException( " 参数取值错误: " + dfkv);
Alias[oKey] = dfv;
}
}
break;
default:
throw new NotSupportedException( " 不支持的参数名: " + pk);
}
}
}
}
public object Convert( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
AnalyseConvertParameter(parameter as string);
try
{
var sourceType = value.GetType();
if (IsReverse && sourceType == typeof( bool))
value = !(( bool)value);
if (targetType == typeof( string))
{
if (Alias != null && Alias.ContainsKey(value))
return Alias[value];
else if (Alias != null && Alias.ContainsKey( " other "))
return Alias[ " other "];
else
return value == null ? "" : value.ToString();
}
if (targetType == typeof( bool))
{
if (sourceType == typeof(Visibility))
return (Visibility)value == Visibility.Visible;
}
else if (targetType.IsEnum)
{
if (sourceType == typeof( bool) && targetType == typeof(Visibility))
{
return ( bool)value ? Visibility.Visible : Visibility.Collapsed;
}
else
{
return Enum.Parse(targetType, value.ToString(), true);
}
}
else
{
return System.Convert.ChangeType(value, targetType);
}
return System.Convert.ChangeType(value, targetType);
}
catch
{
return null;
}
}
public object ConvertBack( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return Convert(value, targetType, parameter, culture);
}
}
}
//-----------------------------------------------------
WPF:Data
Binding 数据绑定基础(2)
数据绑定:
是一个建立应用界面和业务逻辑之间联系的一个过程。
被绑定的两者(界面和数据)是相互影响的(反映和记录对方的变化)。
绑定静态资源(资源在同一个XAML文件中,注意一定要放到最上边,紧随之后)
xlmns:system="clr-namespace:assembly=mscorlib">
x:Key="MenuFileHeader">File
绑定静态资源(资源放在独立的资源文件中:"Resources"Skins"Default.xaml)
xlmns:system="clr-namespace:assembly=mscorlib">
x:Key="WindowMainTitle>Window Main
Title
...
...
在Application.xaml中引用所定义的资源文件(当然,你可以直接在这里定义资源)
Source="Resources/Skins/Default.xaml">
...
...
WindowMainTitle}>
绑定动态资源(资源在独立的资源文件中,并被通过动态装载,参见我的WPF:换肤基础)
xlmns:system="clr-namespace:assembly=mscorlib">
x:Key="DynamicWindowMainTitle>
...
...
WindowMainTitle}>
绑定类对象属性(参见我的WPF:数据绑定基础)
绑定数据集(DataSet)
xxx.XAML
xxx.XAML.CS
DataSet
dsUserInfo = GetUserInfo();
//默认Table[0]的名字是"Table",所以上面的Path是Table.xxx
DataContext =
dsUserInfo;
数据绑定的能力还有很多,今天先到这里,休息,休息一下。
是一个建立应用界面和业务逻辑之间联系的一个过程。
被绑定的两者(界面和数据)是相互影响的(反映和记录对方的变化)。
绑定静态资源(资源在同一个XAML文件中,注意一定要放到最上边,紧随
绑定静态资源(资源放在独立的资源文件中:
Title
...
...
在Application.xaml中引用所定义的资源文件(当然,你可以直接在这里定义资源)
...
...
绑定动态资源(资源在独立的资源文件中,并被通过动态装载,参见我的WPF:换肤基础)
...
...
绑定类对象属性(参见我的WPF:数据绑定基础)
绑定数据集(DataSet)
xxx.XAML
xxx.XAML.CS
DataSet
dsUserInfo = GetUserInfo();
//默认Table[0]的名字是"Table",所以上面的Path是Table.xxx
DataContext =
dsUserInfo;
数据绑定的能力还有很多,今天先到这里,休息,休息一下。
WPF
Silverlight游戏中的WriteableBitmap技术可行性报告
摘要: 1.关于图片,Resource和Content的区别2.Clip和WriteableBitmap的适用场合 阅读全文
posted @ 2010-02-02 23:05 Jianqiang Bao 阅读(3090) | 评论 (13) 编辑
SL3和SL2(包括SL3 beta)在aspx页面上的区别
摘要: 以下为SL2的(包括SL3 beta):[代码]以下为SL3的:[代码] 阅读全文
posted @ 2009-07-20 13:16 Jianqiang Bao 阅读(622) | 评论 (1) 编辑
WPF 深入研究 之 图形--Point篇
posted @ 2008-06-08 14:05 Jianqiang Bao 阅读(1585) | 评论 (1) 编辑
WPF 深入研究 之 Print 打印
摘要: 摘要: 这是《我佩服——WPF深入研究》的第六章,包含2个示例的研究,涉及到打印的一些基本技术。 阅读全文
posted @ 2008-05-31 09:07 Jianqiang Bao 阅读(3855) | 评论 (11) 编辑
WPF 深入研究 之 Control 控件
摘要: 摘要: 这是《我佩服——WPF深入研究》的第五章,包含62个示例的研究。 再不发这个帖子,真的不知要拖到什么时候了。本章其实应该有73个示例,很遗憾,我只写了62个,还有11个,涉及到自定义控件和ListView,我还没想好怎样才能描述清楚。我会在以后陆续将其补齐。就是这些,我也用了2周时间,才说清楚。 此后,要停止更新1个月左右,全力投入《博客园精华集》的工作。 阅读全文
posted @ 2008-05-30 19:06 Jianqiang Bao 阅读(10965) | 评论 (11) 编辑
Application=Code+Markup 读书笔记 5-7章
摘要: 我写这套读书笔记,本意是为了作为《WPF 深入研究》一书的辅助,帮我理清思路。所以只列出对于我来说很陌生的概念,或者总结性的言语。4-7章讲的是Layout。 阅读全文
posted @ 2008-05-08 22:41 Jianqiang Bao 阅读(1719) | 评论 (5) 编辑
Application=Code+Markup 读书笔记 1-4章
摘要: 我写《WPF SDK深入研究》一书到了瓶颈部分,因此停下来,看一下Charles Petzold大师写的,很多地方让我茅塞顿开,因此,做读书笔记系列,升华大师的思想,理清自己的思路,同时与大家分享我的心得。
阅读全文
阅读全文
posted @ 2008-05-07 23:25 Jianqiang Bao 阅读(2595) | 评论 (12) 编辑
WPF SDK研究 之 Layout布局
摘要: 摘要: 这是《我佩服——WPF深入研究》的第四章,包含51个示例的研究。Layout布局看似简单,其实里面有很多技巧,本文在介绍这些布局面板的同时,还讲解了如何自定义一个Panel,以及实现它的MeasureOverride和ArrangeOverride。此外,还涉及到IScrollInfo接口,ScrollViewer的使用方法,Thickness转换器。 阅读全文
posted @ 2008-04-27 19:58 Jianqiang Bao 阅读(4483) | 评论 (7) 编辑
WPF SDK研究 之 Flow流
摘要: 这是《我佩服——WPF深入研究》的第三章,包含14个示例的研究。这一章比较怪,都是以FlowDocument为主题,进行布局设计,同时对TextBlock进行了详尽的分析。很多不常见的类出现在这一章的例子中。 阅读全文
posted @ 2008-04-22 23:49 Jianqiang Bao 阅读(3014) | 评论 (7) 编辑
WPF SDK研究 之 数据绑定
摘要: 一直酝酿写一篇文章,详细地介绍WPF数据绑定的所有技术,尽量不要有遗漏。为此详细分析了SDK中的32个示例,作为《我佩服——WPF深入研究》的第二章。应该是全了。希望读者读完这篇文章不会再有数据绑定的困扰。 阅读全文
posted @ 2008-04-15 23:10 Jianqiang Bao 阅读(7269) | 评论 (13) 编辑
WPF SDK研究 之 AppModel
摘要: 早就计划写一本书,书名都起好了《我佩服——WPF深入研究》,基于MS于2005年发布的WPF SDK442个Sample,逐个研究一遍,控制在25章左右。于是就有了眼前这一章,我整整写了两周。写作的过程也是一个自我提高的过程,使我从示例中又学到了很多东西,而这些,在一般书籍上是看不到的,尤其是PageFunction结构化导航和CustomContentState定制导航这两套技术。今天共享出来,希望大家斧正。 阅读全文
posted @ 2008-04-08 21:02 Jianqiang Bao 阅读(4713) | 评论 (10) 编辑
《Programming WPF》翻译 目录
摘要: 翻译 Programming Windows Presentation Foundation (2005) - BBL ——这本书我用了3周时间翻译,处女作,一稿,有很多地方还需要推敲。 阅读全文
posted @ 2008-04-04 14:50 Jianqiang Bao 阅读(5251) | 评论 (21) 编辑
《Programming WPF》翻译 第7章 7.我们进行到哪里了?
posted @ 2008-04-04 14:38 Jianqiang Bao 阅读(347) | 评论 (1) 编辑
《Programming WPF》翻译 第3章 4.我们进行到哪里了?
posted @ 2008-04-04 14:09 Jianqiang Bao 阅读(378) | 评论 (2) 编辑
《Programming WPF》翻译 第3章 3.内嵌控件
posted @ 2008-04-04 14:03 Jianqiang Bao 阅读(1520) | 评论 (3) 编辑
《Programming WPF》翻译 第3章 2.处理输入
posted @ 2008-04-04 13:10 Jianqiang Bao 阅读(979) | 评论 (3) 编辑
《Programming WPF》翻译 第3章 1.什么是控件
posted @ 2008-04-04 13:05 Jianqiang Bao 阅读(1132) | 评论 (2) 编辑
《Programming WPF》翻译 第3章 前言
posted @ 2008-04-04 12:55 Jianqiang Bao 阅读(492) | 评论 (2) 编辑
《Programming WPF》翻译 第4章 6.我们进行到哪里了?
posted @ 2008-04-04 12:54 Jianqiang Bao 阅读(275) | 评论 (2) 编辑
《Programming WPF》翻译 第4章 5.主从复合(Master-Detail)绑定
posted @ 2008-04-04 12:53 Jianqiang Bao 阅读(493) | 评论 (3) 编辑
《Programming WPF》翻译 第4章 4.数据源
posted @ 2008-04-04 12:46 Jianqiang Bao 阅读(588) | 评论 (3) 编辑
《Programming WPF》翻译 第4章 3.绑定到数据列表
posted @ 2008-04-04 12:36 Jianqiang Bao 阅读(879) | 评论 (1) 编辑
《Programming WPF》翻译 第4章 2.数据绑定
posted @ 2008-04-04 12:24 Jianqiang Bao 阅读(796) | 评论 (4) 编辑
《Programming WPF》翻译 第4章 1.不使用数据绑定
posted @ 2008-04-04 12:15 Jianqiang Bao 阅读(573) | 评论 (1) 编辑
《Programming WPF》翻译 第4章 前言
posted @ 2008-04-04 11:54 Jianqiang Bao 阅读(374) | 评论 (2) 编辑
《Programming WPF》翻译 第5章 8.我们进行到哪里了?
posted @ 2008-04-04 11:53 Jianqiang Bao 阅读(227) | 评论 (2) 编辑
《Programming WPF》翻译 第5章 7.控件模板
posted @ 2008-04-04 11:52 Jianqiang Bao 阅读(510) | 评论 (2) 编辑
《Programming WPF》翻译 第5章 6.触发器
posted @ 2008-04-04 11:47 Jianqiang Bao 阅读(829) | 评论 (2) 编辑
《Programming WPF》翻译 第5章 5.数据模板和样式
posted @ 2008-04-04 11:40 Jianqiang Bao 阅读(597) | 评论 (5) 编辑
《Programming WPF》翻译 第5章 4.元素类型样式
posted @ 2008-04-04 11:37 Jianqiang Bao 阅读(342) | 评论 (2) 编辑
《Programming WPF》翻译 第5章 3.命名属性
posted @ 2008-04-04 11:35 Jianqiang Bao 阅读(383) | 评论 (1) 编辑
《Programming WPF》翻译 第5章 2.内嵌样式
posted @ 2008-04-04 11:24 Jianqiang Bao 阅读(327) | 评论 (2) 编辑
《Programming WPF》翻译 第5章 1.不使用样式
posted @ 2008-04-04 11:24 Jianqiang Bao 阅读(336) | 评论 (2) 编辑
《Programming WPF》翻译 第5章 前言
posted @ 2008-04-04 11:13 Jianqiang Bao 阅读(250) | 评论 (2) 编辑
《Programming WPF》翻译 第6章 5.我们进行到哪里了?
posted @ 2008-04-04 11:12 Jianqiang Bao 阅读(183) | 评论 (1) 编辑
《Programming WPF》翻译 第6章 4.应用程序全球化
posted @ 2008-04-04 11:12 Jianqiang Bao 阅读(324) | 评论 (1) 编辑
《Programming WPF》翻译 第6章 3.二进制资源
posted @ 2008-04-04 11:08 Jianqiang Bao 阅读(533) | 评论 (1) 编辑
《Programming WPF》翻译 第6章 2.资源与样式
posted @ 2008-04-04 11:04 Jianqiang Bao 阅读(400) | 评论 (1) 编辑
《Programming WPF》翻译 第6章 1.创建和使用资源
posted @ 2008-04-04 10:57 Jianqiang Bao 阅读(696) | 评论 (1) 编辑
《Programming WPF》翻译 第6章 前言
posted @ 2008-04-04 10:39 Jianqiang Bao 阅读(237) | 评论 (1) 编辑
《Programming WPF》翻译 第7章 6.视频和3-D
posted @ 2008-04-04 01:26 Jianqiang Bao 阅读(361) | 评论 (1) 编辑
《Programming WPF》翻译 第7章 5.可视化层编程
posted @ 2008-04-04 01:24 Jianqiang Bao 阅读(512) | 评论 (1) 编辑
《Programming WPF》翻译 第7章 4.转换
posted @ 2008-04-04 01:21 Jianqiang Bao 阅读(274) | 评论 (1) 编辑
《Programming WPF》翻译 第7章 3.笔刷和钢笔
posted @ 2008-04-04 01:18 Jianqiang Bao 阅读(715) | 评论 (1) 编辑
《Programming WPF》翻译 第7章 2.图形
posted @ 2008-04-04 00:53 Jianqiang Bao 阅读(696) | 评论 (3) 编辑
《Programming WPF》翻译 第7章 1.图形基础
posted @ 2008-04-04 00:30 Jianqiang Bao 阅读(858) | 评论 (1) 编辑
《Programming WPF》翻译 第7章 前言
posted @ 2008-04-03 23:54 Jianqiang Bao 阅读(228) | 评论 (1) 编辑
《Programming WPF》翻译 第9章 6.我们进行到哪里了?
posted @ 2008-04-03 23:53 Jianqiang Bao 阅读(205) | 评论 (1) 编辑
《Programming WPF》翻译 第9章 5.默认可视化
posted @ 2008-04-03 23:52 Jianqiang Bao 阅读(214) | 评论 (1) 编辑
《Programming WPF》翻译 第9章 4.模板
posted @ 2008-04-03 23:51 Jianqiang Bao 阅读(292) | 评论 (1) 编辑
《Programming WPF》翻译 第9章 3.自定义功能
posted @ 2008-04-03 23:47 Jianqiang Bao 阅读(397) | 评论 (1) 编辑
《Programming WPF》翻译 第9章 2.选择一个基类
posted @ 2008-04-03 23:36 Jianqiang Bao 阅读(310) | 评论 (1) 编辑
《Programming WPF》翻译 第9章 1.自定义控件基础
posted @ 2008-04-03 23:32 Jianqiang Bao 阅读(412) | 评论 (1) 编辑
《Programming WPF》翻译 第9章 前言
posted @ 2008-04-03 23:32 Jianqiang Bao 阅读(225) | 评论 (1) 编辑
《Programming WPF》翻译 第8章 6.我们进行到哪里了?
posted @ 2008-04-03 23:29 Jianqiang Bao 阅读(185) | 评论 (1) 编辑
《Programming WPF》翻译 第8章 5.创建动画过程
posted @ 2008-04-03 23:28 Jianqiang Bao 阅读(242) | 评论 (1) 编辑
《Programming WPF》翻译 第8章 4.关键帧动画
posted @ 2008-04-03 23:26 Jianqiang Bao 阅读(483) | 评论 (1) 编辑
《Programming WPF》翻译 第8章 3.Storyboard
posted @ 2008-04-03 23:19 Jianqiang Bao 阅读(606) | 评论 (1) 编辑
《Programming WPF》翻译 第8章 2.Timeline
posted @ 2008-04-03 23:03 Jianqiang Bao 阅读(399) | 评论 (1) 编辑
《Programming WPF》翻译 第8章 1.动画基础
posted @ 2008-04-03 22:39 Jianqiang Bao 阅读(408) | 评论 (1) 编辑
《Programming WPF》翻译 第8章 前言
posted @ 2008-04-03 22:04 Jianqiang Bao 阅读(213) | 评论 (1) 编辑
《Programming WPF》翻译 第8章 动画
posted @ 2008-03-26 22:32 Jianqiang Bao 阅读(539) | 评论 (0) 编辑
《Programming WPF》翻译 第7章 绘图 (2)
posted @ 2008-03-25 20:54 Jianqiang Bao 阅读(513) | 评论 (0) 编辑
《Programming WPF》翻译 第7章 绘图
posted @ 2008-03-24 14:49 Jianqiang Bao 阅读(1123) | 评论 (0) 编辑
《Programming WPF》翻译 第3章 控件
posted @ 2008-03-21 21:35 Jianqiang Bao 阅读(1116) | 评论 (0) 编辑
《Programming WPF》翻译 第5章 样式和控件模板
posted @ 2008-03-20 20:43 Jianqiang Bao 阅读(514) | 评论 (0) 编辑
《Programming WPF》翻译 第9章 自定义控件
posted @ 2008-03-18 21:40 Jianqiang Bao 阅读(1209) | 评论 (1) 编辑
《Programming WPF》翻译 第4章 数据绑定
posted @ 2008-03-17 13:05 Jianqiang Bao 阅读(487) | 评论 (0) 编辑
《Programming WPF》翻译 第6章 资源
posted @ 2008-03-14 12:14 Jianqiang Bao 阅读(525) | 评论 (0) 编辑
WPF SDK研究 Layout(2) GridComplex
posted @ 2008-03-08 21:36 Jianqiang Bao 阅读(140) | 评论 (0) 编辑
WPF SDK研究 Layout(1) Grid
posted @ 2008-03-08 21:02 Jianqiang Bao 阅读(299) | 评论 (0) 编辑
WPF SDK研究 Intro(7) WordGame2
posted @ 2008-03-08 20:36 Jianqiang Bao 阅读(109) | 评论 (0) 编辑
对vs2005创建的WPF模板分析
posted @ 2008-03-08 20:18 Jianqiang Bao 阅读(413) | 评论 (0) 编辑
WPF SDK研究 目录 前言
posted @ 2008-03-08 20:10 Jianqiang Bao 阅读(443) | 评论 (0) 编辑
WPF SDK研究 Intro(6) WordGame1
posted @ 2008-03-08 19:54 Jianqiang Bao 阅读(147) | 评论 (0) 编辑
WPF SDK研究 Intro(5) QuickStart5
posted @ 2008-03-08 19:28 Jianqiang Bao 阅读(124) | 评论 (0) 编辑
WPF SDK研究 Intro(4) QuickStart4
posted @ 2008-03-08 19:22 Jianqiang Bao 阅读(116) | 评论 (0) 编辑
WPF SDK研究 Intro(3) QuickStart3
posted @ 2008-03-08 19:09 Jianqiang Bao 阅读(125) | 评论 (0) 编辑
WPF SDK研究 Intro(2) QuickStart2
posted @ 2008-03-08 18:57 Jianqiang Bao 阅读(146) | 评论 (0) 编辑
WPF SDK研究 Intro(1) QuickStart1
posted @ 2008-03-08 18:56 Jianqiang Bao 阅读(229) | 评论 (0) 编辑
WPF SDK研究 目录
摘要: 本目录持续更新中,每写完一章都会添加到Blog以及这个目录。估计本系列会在20章左右。 阅读全文
posted @ 2008-03-08 18:23 Jianqiang Bao 阅读(804) | 评论 (3) 编辑
WPF SDK研究 Printing (2) EnumerateSubsetOfPrintQueues
posted @ 2008-03-08 18:21 Jianqiang Bao 阅读(139) | 评论 (0) 编辑
WPF SDK研究 Printing (1) PrintDialog
posted @ 2008-03-08 18:16 Jianqiang Bao 阅读(392) | 评论 (1) 编辑
WPF笔记(4.5 Master-Detail数据绑定)——Data Binding
posted @ 2007-09-07 19:59 Jianqiang Bao 阅读(256) | 评论 (1) 编辑
WPF笔记(4.4 数据源)——Data Binding
posted @ 2007-09-07 19:57 Jianqiang Bao 阅读(226) | 评论 (0) 编辑
WPF笔记(4.3 集合数据绑定)——Data Binding
posted @ 2007-09-06 20:50 Jianqiang Bao 阅读(913) | 评论 (4) 编辑
WPF笔记(4.2 单笔数据绑定)——Data Binding
posted @ 2007-09-06 17:17 Jianqiang Bao 阅读(454) | 评论 (0) 编辑
WPF笔记(4.1 旧有事件绑定)——Data Binding
posted @ 2007-09-06 16:06 Jianqiang Bao 阅读(331) | 评论 (0) 编辑
WPF笔记(2.9和2.10)——Layout
posted @ 2007-04-02 21:14 Jianqiang Bao 阅读(2068) | 评论 (2) 编辑
WPF笔记(2.8 常用的布局属性)——Layout
posted @ 2007-04-01 23:17 Jianqiang Bao 阅读(579) | 评论 (2) 编辑
WPF笔记(2.7 文字布局)——Layout
posted @ 2007-04-01 17:48 Jianqiang Bao 阅读(932) | 评论 (1) 编辑
WPF笔记(2.6 ViewBox)——Layout
posted @ 2007-04-01 17:46 Jianqiang Bao 阅读(659) | 评论 (1) 编辑
WPF笔记(2.5 Canvas)——Layout
posted @ 2007-04-01 12:34 Jianqiang Bao 阅读(507) | 评论 (2) 编辑
WPF笔记(1.9 样式和控件模板)——Hello,WPF!
posted @ 2007-04-01 02:28 Jianqiang Bao 阅读(508) | 评论 (2) 编辑
WPF笔记(2.4 Grid)——Layout
posted @ 2007-03-31 15:32 Jianqiang Bao 阅读(1127) | 评论 (2) 编辑
WPF笔记(2.3 StackPanel)——Layout
posted @ 2007-03-31 13:32 Jianqiang Bao 阅读(504) | 评论 (2) 编辑
WPF笔记(2.2 DockPanel)——Layout
posted @ 2007-03-31 13:28 Jianqiang Bao 阅读(812) | 评论 (2) 编辑
WPF笔记(1.10 绘图)——Hello,WPF!
posted @ 2007-03-31 11:28 Jianqiang Bao 阅读(769) | 评论 (2) 编辑
WPF SDK Sample(000)
posted @ 2007-03-30 22:36 Jianqiang Bao 阅读(1085) | 评论 (0) 编辑
WPF笔记(1.8 资源与映射)——Hello,WPF!
posted @ 2007-03-30 20:55 Jianqiang Bao 阅读(784) | 评论 (2) 编辑
WPF笔记(1.6 数据绑定)——Hello,WPF!
posted @ 2007-03-29 22:02 Jianqiang Bao 阅读(1237) | 评论 (2) 编辑
WPF笔记(1.4 布局)——Hello,WPF!
posted @ 2007-03-28 22:05 Jianqiang Bao 阅读(2697) | 评论 (1) 编辑
WPF笔记(1.3 属性元素)——Hello,WPF!
posted @ 2007-03-28 21:03 Jianqiang Bao 阅读(724) | 评论 (2) 编辑
WPF笔记(1.2 Navigation导航)——Hello,WPF!
posted @ 2007-03-28 20:51 Jianqiang Bao 阅读(1252) | 评论 (1) 编辑
WPF笔记(1.1 WPF基础)——Hello,WPF!
posted @ 2007-03-27 21:19 Jianqiang Bao 阅读(2134) | 评论 (2) 编辑
WPF笔记(0)