项目背景:我需要描述一个人的八种不同的行为,每一种行为都是独立的。现在将通过八个CheckBox去分别描述这八种行为,勾选上则存在这种行为,不存在则不勾选,界面图如下:
界面代码:
<Window x:Class="CheckBoxConverterDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:CheckBoxConverterDemo"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<local:ValueConverter x:Key="contentColor"/>
</Window.Resources>
<Window.DataContext>
<local:MainWindowViewModel/>
</Window.DataContext>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<CheckBox Grid.Row="0" Margin="10,0,0,0" Grid.Column="0" IsChecked="{Binding Path=Person.State,Converter={StaticResource contentColor},ConverterParameter=Eatting}" Content="吃饭"></CheckBox>
<CheckBox Grid.Row="0" Grid.Column="1" IsChecked="{Binding Path=Person.State,Converter={StaticResource contentColor},ConverterParameter=Dringking}" Content="喝茶"></CheckBox>
<CheckBox Grid.Row="0" Grid.Column="2" IsChecked="{Binding Path=Person.State,Converter={StaticResource contentColor},ConverterParameter=Sleeping}" Content="睡觉"></CheckBox>
<CheckBox Grid.Row="0" Grid.Column="3" IsChecked="{Binding Path=Person.State,Converter={StaticResource contentColor},ConverterParameter=Playing}" Content="打游戏"></CheckBox>
<CheckBox Grid.Row="1" Margin="10,0,0,0" Grid.Column="0" IsChecked="{Binding Path=Person.State,Converter={StaticResource contentColor},ConverterParameter=Speaking}" Content="说话"></CheckBox>
<CheckBox Grid.Row="1" Grid.Column="1" IsChecked="{Binding Path=Person.State,Converter={StaticResource contentColor},ConverterParameter=Smiling}" Content="微笑"></CheckBox>
<CheckBox Grid.Row="1" Grid.Column="2" IsChecked="{Binding Path=Person.State,Converter={StaticResource contentColor},ConverterParameter=Crying}" Content="哭泣"></CheckBox>
<CheckBox Grid.Row="1" Grid.Column="3" IsChecked="{Binding Path=Person.State,Converter={StaticResource contentColor},ConverterParameter=Lazing}" Content="发呆"></CheckBox>
</Grid>
<Grid Grid.Row="2">
<Button Width="80" Height="35" Content="确定" Command="{Binding PressOkCommand}"></Button>
</Grid>
</Grid>
</Window>
一个人的这八种行为,通过一个枚举类来表示:
using System;
namespace CheckBoxConverterDemo
[Flags]
public enum TypeEnum
None = 0x0,
Eatting = 0x1,
Dringking = 0x2,
Sleeping = 0x4,
Playing = 0x8,
Speaking = 0x10,
Smiling = 0x20,
Crying = 0x40,
Lazing = 0x80,
public class Person
public TypeEnum State { get; set; }
然后通过转换器去转换不同的状态勾选不同的CheckBox
using System;
using System.Windows.Data;
namespace CheckBoxConverterDemo
public class ValueConverter : IValueConverter
public TypeEnum SetValue { get; set; }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
if (value == null)
return false;
var getData = (TypeEnum)value;
SetValue = getData;
switch (parameter.ToString())
case "Eatting":
if ((getData & TypeEnum.Eatting) == TypeEnum.Eatting)
return true;
break;
case "Dringking":
if ((getData & TypeEnum.Dringking) == TypeEnum.Dringking)
return true;
break;
case "Sleeping":
if ((getData & TypeEnum.Sleeping) == TypeEnum.Sleeping)
return true;
break;
case "Playing":
if ((getData & TypeEnum.Playing) == TypeEnum.Playing)
return true;
break;
case "Speaking":
if ((getData & TypeEnum.Speaking) == TypeEnum.Speaking)
return true;
break;
case "Smiling":
if ((getData & TypeEnum.Smiling) == TypeEnum.Smiling)
return true;
break;
case "Crying":
if ((getData & TypeEnum.Crying) == TypeEnum.Crying)
return true;
break;
case "Lazing":
if ((getData & TypeEnum.Lazing) == TypeEnum.Lazing)
return true;
break;
return false;
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
if ((bool)value)
switch (parameter.ToString())
case "Eatting":
SetValue = SetValue | TypeEnum.Eatting;
break;
case "Dringking":
SetValue = SetValue | TypeEnum.Dringking;
break;
case "Sleeping":
SetValue = SetValue | TypeEnum.Sleeping;
break;
case "Playing":
SetValue = SetValue | TypeEnum.Playing;
break;
case "Speaking":
SetValue = SetValue | TypeEnum.Speaking;
break;
case "Smiling":
SetValue = SetValue | TypeEnum.Smiling;
break;
case "Crying":
SetValue = SetValue | TypeEnum.Crying;
break;
case "Lazing":
SetValue = SetValue | TypeEnum.Lazing;
break;
switch (parameter.ToString())
case "Eatting":
if ((SetValue & TypeEnum.Eatting) == TypeEnum.Eatting)
SetValue = SetValue ^ TypeEnum.Eatting;
break;
case "Dringking":
if ((SetValue & TypeEnum.Dringking) == TypeEnum.Dringking)
SetValue = SetValue ^ TypeEnum.Dringking;
break;
case "Sleeping":
if ((SetValue & TypeEnum.Sleeping) == TypeEnum.Sleeping)
SetValue = SetValue ^ TypeEnum.Sleeping;
break;
case "Playing":
if ((SetValue & TypeEnum.Playing) == TypeEnum.Playing)
SetValue = SetValue ^ TypeEnum.Playing;
break;
case "Speaking":
if ((SetValue & TypeEnum.Speaking) == TypeEnum.Speaking)
SetValue = SetValue ^ TypeEnum.Speaking;
break;
case "Smiling":
if ((SetValue & TypeEnum.Smiling) == TypeEnum.Smiling)
SetValue = SetValue ^ TypeEnum.Smiling;
break;
case "Crying":
if ((SetValue & TypeEnum.Crying) == TypeEnum.Crying)
SetValue = SetValue ^ TypeEnum.Crying;
break;
case "Lazing":
if ((SetValue & TypeEnum.Lazing) == TypeEnum.Lazing)
SetValue = SetValue ^ TypeEnum.Lazing;
break;
return SetValue;
在ViewModel内进行数据绑定:
using System.ComponentModel;
using System.Windows.Input;
namespace CheckBoxConverterDemo
public class MainWindowViewModel
public MainWindowViewModel()
InitData();
private Person _person;
public Person Person
{ return _person; }
_person = value;
RaisePropertyChanged("Person");
public ICommand PressOkCommand { get { return new RelayCommand(PressOK, CanPreess); } }
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string propertyName)
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
private void InitData()
Person = new Person();
Person.State = TypeEnum.Dringking | TypeEnum.Smiling | TypeEnum.Playing;
private bool CanPreess()
return true;
private void PressOK()
TypeEnum getValue = Person.State;
源码:放在CSDN下载了
点击这里下载源码
项目背景:我需要描述一个人的八种不同的行为,每一种行为都是独立的。现在将通过八个CheckBox去分别描述这八种行为,勾选上则存在这种行为,不存在则不勾选,界面图如下:界面代码:<Window x:Class="CheckBoxConverterDemo.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006...
现象:当一个对象集合里,某些属性需要以RadioButton或者CheckBox的形式展现出来,并且会随着切换集合中的对象而变化时,RadioButton绑定不会正确更新,而CheckBox则没问题;
这里以一个小例子来说明:
一个学生集合,每个学生其中包含一个性别属性S
5.5 单选控件和单选组控件(RadioButton 和RadioButtonList)
5.5.1 单选控件(RadioButton)
5.5.2 单选组控件(RadioButtonList)
5.6 复选框控件和复选组控件(CheckBox 和CheckBoxList)
5.6.1 复选框控件(CheckBox)
5.6.2 复选组控件(CheckBoxList)
5.7 列表控件(DropDownList,ListBox 和BulletedList)
5.7.1 DropDownList 列表控件
5.7.2 ListBox 列表控件
5.7.3 BulletedList 列表控件
第一篇窗口与界面编程 11
5.8 面板控件(Panel)
5.9 占位控件(PlaceHolder)
5.10 日历控件(Calendar)
5.10.1 日历控件的样式
5.10.2 日历控件的事件
5.11 广告控件(AdRotator)
5.12 文件上传控件(FileUpload)
5.13 视图控件(MultiView 和View)
5.14 表控件(Table)
5.15 向导控件(Wizard)
5.15.1 向导控件的样式
5.15.2 导航控件的事件
5.16 XML 控件
5.17 验证控件
5.17.1 表单验证控件(RequiredFieldValidator)
5.17.2 比较验证控件(CompareValidator)
5.17.3 范围验证控件(RangeValidator)
5.17.4 正则验证控件(RegularExpressionValidator)
5.17.5 自定义逻辑验证控件(CustomValidator)
5.17.6 验证组控件(ValidationSummary)
5.18 导航控件
5.19 其他控件
5.19.1 隐藏输入框控件(HiddenField)
5.19.2 图片热点控件(ImageMap)
5.19.3 静态标签控件(Lieral)
5.19.4 动态缓存更新控件(Substitution)
5.20 小结
第 6 章 Web 窗体的高级控件
6.1 登录控件
6.1.1 登录控件(Login)
6.1.2 登录名称控件(LoginName)
6.1.3 登录视图控件(LoginView)
6.1.4 登录状态控件(LoginStatus)
6.1.5 密码恢复控件(PasswordRecovery)
6.1.6 密码更改控件(ChangePassword)
12 第一篇 窗口与界面编程
6.1.7 生成用户控件(CreateUserWizard)
6.2 网站管理工具
6.2.1 启动管理工具
6.2.2 用户管理
6.2.3 用户角色
6.2.4 访问规则管理
2.6.5 应用程序配置
6.3 使用登录控件
6.3.1 生成用户控件(CreateUserWizard)
6.3.2 密码更改控件(ChangePassword)
6.4 小结
第三篇 数据操作篇
第 7 章数据库与 ADO.NET 基础
7.1 数据库基础
7.1.1 结构化查询语言
7.1.2 表和视图
7.1.3 存储过程和触发器
7.2 使用SQL Server 2005 管理数据库
7.2.1 初步认识SQL Server 2005
7.2.2 创建数据库
7.2.3 删除数据库
7.2.4 备份数据库
7.2.5 还原数据库
7.2.6 创建表
7.2.7 删除表
7.2.8 创建数据库关系图
7.3 ADO.NET 连接SQL 数据库
7.3.1 ADO.NET 基础
7.3.2 连接SQL 数据库
7.3.3 ADO.NET 过程
7.4 ADO 与ADO.NET
7.4.1 ADO 概述
7.4.2 ADO.NET 与ADO
第一篇窗口与界面编程 13
7.5 ADO.NET 常用对象
7.6 Connection 连接对象
7.6.1 连接SQL 数据库
7.6.2 连接Access 数据库
7.6.3 打开和关闭连接
7.7 DataAdapter 适配器对象
7.8 Command 执行对象
7.8.1 ExecuteNonQuery 方法
7.8.2 ExecuteNonQuery 执行存储过程
7.8.3 ExecuteScalar 方法
7.9 DataSet 数据集对象
7.9.1 DataSet 数据集基本对象
7.9.2 DataTable 数据表对象
7.9.3 DataRow 数据行对象
7.9.4 DataView 数据视图对象
7.10 DataReader 数据访问对象
7.10.1 DataReader 对象概述
7.10.2 DataReader 读取数据库
7.10.3 异常处理
7.11 连接池概述
7.12 参数化查询
7.13 小结
第 8 章 Web 窗体的数据控件
8.1 数据源控件
8.1.1 SQL 数据源控件(SqlDataSource)
8.1.2 Access 数据源控件(AccessDataSource)
8.1.3 目标数据源控件(ObjectDataSource)
8.1.4 LINQ 数据源控件(LinqDataSource)
8.1.5 Xml 数据源控件(XmlDataSource)
8.1.6 站点导航控件(SiteMapDataSource)
8.2 重复列表控件(Repeater)
8.3 数据列表控件(DataList)
8.4 数据列表控件(GridView)
8.5 数据绑定控件(FormView)
8.6 数据绑定控件(DetailsView)
14 第一篇 窗口与界面编程
8.7 数据绑定控件(ListView)
8.8 数据绑定控件(DataPager)
8.9 小结
第 9 章 ASP.NET 操作数据库
9.1 使用ADO.NET 操作数据库
9.1.1 使用ExecuteReader()操作数据库
9.1.2 使用ExecuteNonQuery()操作数据库
9.1.3 使用ExecuteScalar()操作数据库
9.1.4 使用ExecuteXmlReader()操作数据库
9.2 ASP.NET 创建和插入记录
9.2.1 SQL INSERT 数据插入语句
9.2.2 使用Command 对象更新记录
9.2.3 使用DataSet 数据集插入记录
9.3 ASP.NET 更新数据库
9.3.1 SQL UPDATE 数据更新语句
9.3.2 使用Command 对象更新记录
9.3.3 使用DataSet 数据集更新记录
9.4 ASP.NET 删除数据
9.4.1 SQL DELETE 数据删除语句
9.4.2 使用Command 对象删除记录
9.4.3 使用DataSet 数据集删除记录
9.5 使用存储过程
9.5.1 存储过程的优点
9.5.2 创建存储过程
9.5.3 调用存储过程
9.6 ASP.NET 数据库操作实例
9.6.1 制作用户界面(UI)
9.6.2 使用GridView 显示、删除、修改数据
9.6.3 使用DataList 显示数据
9.6.4 DataList 分页实现
9.6.5 使用SQLHelper 操作数据库
9.7 小结
第 10 章访问其他数据源
10.1 使用ODBC .NET Data Provider
第一篇窗口与界面编程 15
10.1.1 ODBC .NET Data Provider 简介
10.1.2 建立连接
10.2 使用OLE DB.NET Data Provider
10.2.1 OLE DB.NET Data Provider 简介
10.2.2 建立连接
10.3 访问MySql
10.3.1 MySql 简介
10.3.2 建立连接
10.4 访问Excel
10.4.1 Excel 简介
10.4.2 建立连接
10.5 访问txt
10.5.1 使用ODBE.NET Data Provider 连接txt
10.5.2 使用OLE DB .NET Data Provider 连接txt
10.5.3 使用System.IO 命名空间
10.6 访问SQLite
10.6.1 SQLite 简介
10.6.2 SQLite 连接方法
10.7 小结
第四篇 ASP.NET网络编程
第 11 章用户控件和自定义控件
11.1 用户控件
11.1.1 什么是用户控件
11.1.2 编写一个简单的控件
11.1.3 将Web 窗体转换成用户控件
11.2 自定义控件
11.2.1 实现自定义控件
11.2.2 复合自定义控件
11.3 用户控件和自定义控件的异同
11.4 用户控件示例
11.4.1 ASP.NET 登录控件
11.4.2 ASP.NET 登录控件的开发
11.4.3 ASP.NET 登录控件的使用
16 第一篇 窗口与界面编程
11.5 自定义控件实例
11.5.1 ASP.NET 分页控件
11.5.2 ASP.NET 分页控件的使用
11.6 小结
第 12 章 ASP.NET 的皮肤、主题和母版页
12.1 皮肤和主题
12.1.1 CSS 简介
12.1.2 CSS 基础
12.1.3 CSS 常用属性
12.1.4 将CSS 应用在控件上
12.1.5 主题和皮肤
12.1.6 页面主题和全局主题
12.1.7 应用和禁用主题
12.1.8 用编程的方法控制主题
12.2 母版页
12.2.1 母版页基础
12.2.2 内容窗体
12.2.3 母版页的运行方法
12.2.4 嵌套母版页
12.3 Microsoft Expression 2
12.3.1 Microsoft Expression 2 简介
12.3.2 安装Microsoft Expression 2
12.4 使用Microsoft Expression Web 2 制作页面
12.4.1 创建ASPX 页面
12.4.2 创建CSS 层叠样式表
12.4.3 创建框架集
12.5 小结
第 13 章 ASP.NET 内置对象,应用程序配置和缓存
13.1 ASP.NET 内置对象
13.1.1 Request 传递请求对象
13.1.2 Response 请求响应对象
13.1.3 Application 状态对象
13.1.4 Session 状态对象
13.1.5 Server 服务对象
第一篇窗口与界面编程 17
13.1.6 Cookie 状态对象
13.1.7 Cache 缓存对象
13.1.8 Global.asax 配置
13.2 ASP.NET 应用程序配置
13.2.1 ASP.NET 应用程序配置
13.2.2 Web.config 配置文件
13.2.3 ASP.NET 基本配置节
13.3 ASP.NET 缓存功能
13.3.1 缓存概述
13.3.2 页面输出缓存
13.3.3 页面部分缓存
13.3.4 应用程序数据缓存
13.3.5 检索应用程序数据缓存对象
13.4 小结
第 14 章 ASP.NET XML 和Web Service
14.1 XML 简介
14.2 读写XML
14.2.1 XML 与HTML
14.2.2 创建XML 文档
14.2.3 XML 控件
14.2.4 XML 文件读取类(XmlTextReader)
14.2.5 XML 文件编写类(XmlTextWriter)
14.2.6 XML 文本文档类(XmlDocument)
14.3 XML 串行化
14.3.1 XmlSerializer 串行化类
14.3.2 基本串行化
14.4 XML 样式表XSL
14.4.1 XSL 简介
14.4.2 使用XSLT
14.5 Web 服务(Web Service)
14.5.1 什么是Web 服务
14.5.2 Web 服务体系结构
14.5.3 Web 服务协议栈
14.6 简单Web Service 示例
14.7 自定义Web Service
18 第一篇 窗口与界面编程
14.7.1 创建自定义的Web Service
14.7.2 使用自定义的Web Service
14.8 小结
第五篇 ASP.NET 3.5 高级编程
第 15 章图形图像编程
15.1 图形图像基础
15.1.1 图像布局
15.1.2 GDI+简介
15.1.3 绘制线条示例
15.1.4 .NET Framework 绘图类
15.2 图形编程
15.2.1 Graphics 类
15.2.2 绘制基本图形
15.2.3 图形绘制实例
15.3 绘制文字特效
15.3.1 投影特效
15.3.2 倒影特效
15.3.3 旋转特效
15.4 绘制图片
15.4.1 载入图像文件
15.4.2 GDI+输出图像
15.5 图像特效处理
15.5.1 底片效果
15.5.2 浮雕效果
15.6 小结
第 16 章 ASP.NET 3.5 和AJAX
16.1 AJAX 基础
16.1.1 什么是AJAX
16.1.2 ASP.NET AJAX 入门
16.1.3 ASP.NET 2.0 AJAX
16.1.4 ASP.NET 3.5 AJAX
第一篇窗口与界面编程 19
16.1.5 AJAX 简单示例
16.2 ASP.NET 3.5AJAX 控件
16.2.1 脚本管理控件(ScriptManger)
16.2.2 脚本管理控件(ScriptMangerProxy)
16.2.3 时间控件(Timer)
16.2.4 更新区域控件(UpdatePanel)
16.2.5 更新进度控件(UpdateProgress)
16.3 AJAX 编程
16.3.1 自定义异常处理
16.3.2 使用母版页的UpdatePanel
16.3.3 母版页刷新内容窗体
16.4 小结
第 17 章 ASP.NET MVC 基础
17.1 了解MVC
17.1.1 MVC 和Web Form
17.1.2 ASP.NET MVC 的运行结构
17.2 ASP.NET MVC 基础
17.2.1 安装ASP.NET MVC
17.2.2 新建一个MVC 应用程序
17.2.3 ASP.NET MVC 应用程序的结构
17.2.4 运行ASP.NET MVC 应用程序
17.3 ASP.NET MVC 原理
17.3.1 ASP.NET MVC 运行流程
17.3.2 ASP.NET MVC 工作原理
17.4 ASP.NET MVC 开发
17.4.1 创建ASP.NET MVC 页面
17.4.2 ASP.NET MVC 数据呈现(ViewData)
17.4.3 ASP.NET MVC 跨页数据呈现(TempData)
17.4.4 ASP.NET MVC 页面重定向
17.4.5 ASP.NET MVC URL 路由(URLRouting)
17.4.6 ASP.NET MVC 控件辅助工具(Helper)
17.4.7 ASP.NET MVC 表单传值
17.5 小结
第 18 章 WCF 开发基础
20 第一篇 窗口与界面编程
18.1 了解WCF
18.1.1 什么是WCF
18.1.2 为什么需要WCF
18.2 WCF 基础
18.2.1 服务
18.2.2 地址
18.2.3 契约
18.3 WCF 应用
18.3.1 创建WCF 应用
18.3.2 创建WCF 方法
18.4 WCF 消息传递
18.4.1 消息传递
18.4.2 消息操作
18.5 使用WCF 服务
18.5.1 在客户端添加WCF 服务
18.5.2 在客户端使用WCF 服务
18.6 小结
第 19 章 WPF 开发基础
19.1 了解WPF
19.1.1 什么是WPF
19.2 WPF 的应用范围
19.2 WPF 和Microsoft Expression
19.2.1 使用Microsoft Expression Blend 设计WPF
19.2.2 WPF 控件样式
19.2.3 浅谈XAML
19.2.4 WPF 控件层次
19.3 WPF 应用程序开发
19.3.1 WPF 动画事件
19.3.2 WPF 时间轴
19.3.3 WPF 事件处理
19.4 WPF 系统开发
19.4.1 WPF 系统需求
19.4.2 WPF 界面开发
19.4.3 WPF 动画制作
19.4.4 WPF 事件编写
第一篇窗口与界面编程 21
19.5 小结
第六篇 ASP.NET 3.5 与LINQ
第20 章 ASP.NET 3.5 与LINQ
20.1 什么是LINQ
20.1.1 LINQ 起源
20.1.2 LINQ 构架
20.1.3 LINQ 与Visual Studio 2008 新特性
20.2 LINQ 与Web 应用程序
20.2.1 创建使用LINQ 的Web 应用程序
20.2.2 基本的LINQ 数据查询
20.2.3 IEnumerable 和IEnumerable<T>接口
20.2.4 IQueryProvider 和IQueryable<T>接口
20.2.5 LINQ 相关的命名空间
20.3 Lambda 表达式
20.3.1 匿名方法
20.3.2 Lambda 表达式基础
20.3.3 Lambda 表达式格式
20.3.4 Lambda 表达式树
20.3.5 访问Lambda 表达式树
20.4 小结
第 21 章使用 LINQ 查询
21.1 LINQ 查询概述
21.1.1 准备数据源
21.1.2 使用LINQ
21.1.3 执行LINQ 查询
21.2 LINQ 查询语法概述
21.3 基本子句
21.3.1 from 查询子句
21.3.2 where 条件子句
21.3.3 select 选择子句
21.3.4 group 分组子句
21.3.5 orderby 排序子句
22 第一篇 窗口与界面编程
21.3.6 into 连接子句
21.3.7 join 连接子句
21.3.8 let 临时表达式子句
21.4 LINQ 查询操作
21.4.1 LINQ 查询概述
21.4.2 投影操作
21.4.3 筛选操作
21.4.4 排序操作
21.4.5 聚合操作
21.5 使用LINQ 查询和操作数据库
21.5.1 简单查询
21.5.2 建立连接
21.5.3 插入数据
21.5.4 修改数据
21.5.5 删除数据
21.6 LINQ 与MVC
21.6.1 创建ASP.NET MVC 应用程序
21.6.2 创建LINQ to SQL
21.6.3 数据查询
21.7 小结
第七篇 ASP.NET 3.5 模块开发
第 22 章注册模块设计
22.1 学习要点
22.2 系统设计
22.2.1 模块功能描述
22.2.2 模块流程分析
22.3 数据库设计
22.3.1 数据库的分析和设计
22.3.2 数据表的创建
22.4 界面设计
22.4.1 基本界面
22.4.2 创建CSS
22.5 代码实现
第一篇窗口与界面编程 23
22.5.1 验证控制
22.5.2 过滤输入信息
22.5.3 插入注册信息
22.5.4 管理员页面
22.6 实例演示
22.7 小结
第 23 章登录模块设计
23.1 学习要点
23.2 系统设计
23.2.1 模块功能描述
22.2.2 模块流程分析
23.3 数据库设计
23.3.1 数据库设计分析
23.3.2 数据库表的创建
23.4 界面设计
23.4.1 基本界面
23.4.2 创建CSS
23.4.3 发送密码页面
23.5 代码实现
23.5.1 登录代码实现
23.5.2 邮件发送页面
23.5.3 根据不同的用户显示不同的内容
23.6 实例演示
23.7 小结
第 24 章广告模块设计
24.1 学习要点
24.2 系统设计
24.2.1 模块功能描述
24.2.2 模块流程分析
24.3 数据库设计
24.3.1 数据库设计分析
24.3.2 数据库表的创建
24.4 界面设计
24.4.1 发布广告界面
24 第一篇 窗口与界面编程
24.4.2 发布广告页数据源配置
24.4.3 修改广告界面
24.4.4 管理广告界面
24.4.5 分类管理界面
24.5 代码实现
24.5.1 广告添加功能
24.5.2 广告修改功能
24.5.3 自定义控件的实现
24.6 实例演示
24.7 小结
第 25 章新闻模块设计
25.1 学习要点
25.2 系统设计
25.2.1 模块功能描述
25.2.2 模块流程分析
25.3 数据库设计
23.3.1 数据库设计
25.3.2 数据表的创建
25.4 界面设计
25.4.1 登录界面
25.4.2 后台框架集
25.4.3 新闻发布页面
25.4.4 新闻修改页面
25.4.5 新闻管理页面
25.4.6 新闻分类管理页面
25.5 代码实现
25.5.1 导航菜单配置
25.5.2 身份验证页面
25.5.3 新闻发布页面
25.5.4 静态生成功能
25.5.5 新闻显示页面
25.5.6 静态模板编写
25.6 实例演示
25.7 小结
第 26 章投票模块设计
第一篇窗口与界面编程 25
26.1 学习要点
26.2 系统设计
26.2.1 模块功能描述
26.2.2 模块流程分析
26.3 数据库设计
26.3.1 数据库设计
26.3.2 数据表的创建
26.4 界面设计
26.4.1 后台框架集
26.4.2 投票管理页面
26.4.3 投票发布页面
26.4.4 投票修改页面
26.4.5 投票删除页面
26.5 代码实现
26.5.1 添加投票代码实现
26.5.2 修改投票代码实现
26.5.3 删除投票代码实现
26.5.4 显示投票代码实现
26.5.5 用户投票代码实现
26.6 实例演示
26.7 小结
第 27 章聊天模块设计
27.1 学习要点
27.2 系统设计
27.2.1 模块功能描述
27.2.2 模块流程分析
27.3 界面设计
27.3.1 登录界面设计
27.3.2 登录界面CSS
27.3.3 聊天室显示界面
27.3.4 聊天室界面CSS
27.4 代码实现
27.4.1 登录代码实现
27.4.2 多人聊天代码实现
27.4.3 单人聊天代码实现
26 第一篇 窗口与界面编程
27.4.4 聊天记录保存实现
27.5 实例演示
27.6 小结
第六篇 ASP.NET 3.5 应用实例
第 28 章制作一个 ASP.NET 留言本
28.1 系统设计
28.1.1 需求分析
28.1.2 系统功能设计
28.1.3 模块功能划分
28.2 数据库设计
28.2.1 数据库的分析和设计
28.2.2 数据表的创建
28.2.3 数据表关系图
28.3 系统公用模块的创建
28.3.1 创建CSS
28.3.2 使用SQLHepler
28.3.3 配置Web.config
28.4 系统界面和代码实现
28.4.1 留言板用户控件
28.4.2 管理员登录实现
28.4.3 用户注册登录实现
28.4.4 用户登录实现
28.4.5 留言本界面布局
28.4.6 留言功能实现
28.4.7 回复功能实现
28.4.8 删除功能的实现
28.4.9 用户索引实现
28.5 用户体验优化
28.5.1 AJAX 留言实现
28.5.2 AJAX 数据重绑定
28.5.3 系统导航实现
28.5.4 侧边栏界面优化
28.6 用户功能实现
第一篇窗口与界面编程 27
28.6.1 用户信息界面
28.6.2 用户信息修改实现
28.6.3 用户信息删除实现
28.6.4 用户注销
28.7 实例演示
28.7.1 准备数据源
28.7.2 基本实例演示
28.7.3 用户功能演示
28.8 小结
第 29 章制作一个 ASP.NET 校友录系统
第 29 章制作一个ASP.NET 校友录系统
29.1 系统设计
29.1.1 需求分析
29.1.2 系统功能设计
29.1.3 模块功能划分
29.2 数据库设计
29.2.1 数据库分析和设计
29.2.2 数据表的创建
29.3 数据表关系图
29.4 系统公用模块的创建
29.4.1 使用Fckeditor
29.4.2 使用SQLHelper
29.4.3 配置Web.config
29.5 系统界面和代码实现
29.5.1 用户注册实现
29.5.2 用户登录实现
29.5.3 校友录页面规划
29.5.4 自定义控件实现
29.5.5 校友录页面实现
29.5.6 日志发布实现
29.5.7 日志修改实现
29.5.8 管理员日志删除
29.5.9 日志显示页面
29.5.10 用户索引页面
29.5.11 管理员用户删除
28 第一篇 窗口与界面编程
29.6 用户体验优化
29.6.1 超链接样式优化
29.6.2 默认首页优化
29.6.3 导航栏编写
29.6.4 AJAX 留言优化
29.6.5 优化留言表情
29.7 高级功能实现
29.7.1 后台管理页面实现
29.7.2 日志管理实现
29.7.3 日志修改和删除实现
29.7.4 评论删除实现
29.7.5 板报功能实现
29.7.6 用户修改和删除实现
29.7.7 用户权限管理
29.7.8 权限及注销实现
29.8 实例演示
29.8.1 准备数据源
29.8.2 基本实例演示
29.8.3 管理后台演示
29.9 小结
<ListBox Name="list_axis" DisplayMemberPath="Name" SelectedValuePath="Num" SelectionChanged="list_axis_SelectionChanged"/>
DisplayMemberPath属性:显示的值
SelectedValuePath属性:在选中某个Item时我们可以通过ListBox的SelectedValue属性获取的值的类型
我们先构建一个list
public class EnumerationDataProvider : ObjectDataProvider
public Type EnumerationType { get; set; }
public string NoneValue { get; set; }
public string NoneDisplayValue { get;...
<Window x:Class="WPFListView.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns...
where T : struct, IConvertible
private static Dictionary<int, Tuple<T, string>> collectionCache;
WPF中的DataGrid是一个非常强大的控件,可以用于显示和编辑数据。在WPF中,数据绑定是非常重要的,因为它可以使我们更加方便地将数据从数据源绑定到控件。
以下是在WPF中使用DataGrid进行数据绑定的步骤:
1. 创建数据源
首先,我们需要创建一个数据源,可以是一个集合,也可以是一个DataTable。例如,我们可以创建一个名为“myData”的DataTable:
DataTable myData = new DataTable();
myData.Columns.Add("Name", typeof(string));
myData.Columns.Add("Age", typeof(int));
myData.Rows.Add("Tom", 20);
myData.Rows.Add("Jerry", 30);
2. 设置DataGrid的ItemsSource属性
接下来,我们需要将DataGrid的ItemsSource属性设置为我们的数据源,如下所示:
myDataGrid.ItemsSource = myData.DefaultView;
3. 设置DataGrid列
我们需要为DataGrid设置列,让它可以正确地显示我们的数据。可以通过XAML或代码来设置列。以下是在代码中设置列的示例:
DataGridTextColumn nameColumn = new DataGridTextColumn();
nameColumn.Header = "Name";
nameColumn.Binding = new Binding("Name");
myDataGrid.Columns.Add(nameColumn);
DataGridTextColumn ageColumn = new DataGridTextColumn();
ageColumn.Header = "Age";
ageColumn.Binding = new Binding("Age");
myDataGrid.Columns.Add(ageColumn);
4. 运行程序
现在我们已经完成了数据绑定,可以运行程序并查看DataGrid中的数据了。
以上就是在WPF中使用DataGrid进行数据绑定的基本步骤。需要注意的是,我们可以使用不同的数据源和不同的列类型来实现更加复杂的数据绑定。