关于WPF你应该知道的2000件事

原文 关于WPF你应该知道的2000件事

以下列出了迄今为止为WPF博客所知的2,000件事所创建的所有帖子。

帖子总数= 1,201

动画

  • #7 - 基于属性的动画
  • #686 - 使用动画制作图像脉冲
  • #777 - 动画变换
  • #778 - 动画缩放变换
  • #779 - 动画旋转变换
  • #1,164 - 使用动画弹回控件

基本

  • #1 - 什么是WPF?
  • #2 - 渲染层
  • #5 - 矢量图形和分辨率独立
  • #6 - WPF布局
  • #9 - 样式
  • #10 - 控制模板
  • #11 - 命令
  • #12 - 标记和代码背后
  • #13 - 标记的好处
  • #14 - 基于页面的导航
  • #15 - WPF与Silverlight和ASP.NET
  • #16 - 使用Direct3D进行硬核3D应用
  • #17 - WPF发布历史
  • #18 - Silverlight和WPF的差异
  • #19 - System.Windows命名空间
  • #20 - 独立和浏览器托管的应用程序
  • #23 - WPF单位
  • #26 - WPF架构
  • #30 - 视觉类
  • #31 - UIElement Class
  • #32 - FrameworkElement
  • #33 - 控制类
  • #36 - 五种WPF应用程序
  • #38 - 应用程序类
  • #39 - 窗口类
  • #40 - 应用程序生命周期
  • #41 - 启动和关闭时的窗口事件
  • #42 - WPF应用程序入口点
  • #43 - WPF Main()函数发生了什么
  • #44 - 申请是单身人士
  • #45 - 创建WPF控件的两种方法
  • #46 - 处理WPF应用程序中的命令行参数
  • #47 - Windows会话结束时检测
  • #48 - 处理应用程序的退出事件
  • #49 - 未处理的例外情况
  • #50 - 应用程序范围属性
  • #51 - 资源
  • #52 - 定义和使用Application-Scoped资源
  • #53 - 从代码访问Application-Scoped资源
  • #54 - 应用程序的主窗口
  • #55 - Application.ShutdownMode
  • #63 - 三个改变的地方
  • #64 - Visual Studio为您创建XAML
  • #108 - 逻辑树
  • #109 - 在代码中导航逻辑树
  • #110 - 查看WPF逻辑树的应用程序
  • #111 - 视觉树
  • #112 - 在代码中导航Visual Tree
  • #113 - 查看WPF可视树的应用程序
  • #114 - 如何实现依赖属性
  • #116 - Dependency属性值存储在DependencyObject中
  • #117 - 注册依赖属性
  • #118 - 不要向依赖属性Getter / Setter添加代码
  • #119 - 从XAML或代码读取和写入依赖属性值
  • #120 - 清除依赖属性值
  • #121 - 当依赖属性的值发生变化时被通知
  • #122 - 验证依赖属性
  • #123 - 强制依赖属性
  • #124 - WPF使用依赖项属性回调的一个示例
  • #125 - 响应WPF对象的依赖属性的变化
  • #127 - 使用触发器对依赖项属性更改做出反应
  • #129 - 触发器更改的属性会自动重置
  • #130 - WPF支持三种类型的触发器
  • #131 - 依赖项属性在逻辑树中从较高的向上继承值
  • #132 - 继承的属性值通过所有元素
  • #168 - 更完整的类层次结构
  • #169 - 基本元素类
  • #170 - 基本元素类提供的功能
  • #171 - 其他基类 - Freezable和Animatable
  • #173 - 您可以将Freezable对象置于只读状态
  • #175 - 冻结您不想修改的图形对象
  • #176 - 两种模板
  • #197 - 覆盖标准事件的应用程序类方法
  • #198 - 创建和显示其他Windows
  • #199 - 应用程序的Windows属性列出其所有Windows
  • #200 - Windows之间的父/子关系
  • #201 - 使用ShowDialog显示模态对话框
  • #202 - 模态/无模式对话框的示例
  • #203 - 窗口大小和位置在设备无关单元中指定
  • #204 - 检测WPF窗口中的按键
  • #205 - WPF GUI管道
  • #206 - WPF应用程序使用事件驱动的范例
  • #610 - 应用程序事件序列
  • #611 - 在退出事件处理程序中设置应用程序退出代码
  • #612 - 基于页面的应用程序的应用程序事件序列
  • #759 - 与设备无关的单元(DIP)
  • #1,098 - OnLastWindow关闭关机模式
  • #1,099 - OnMainWindow关闭关机模式
  • #1,100 - OnExplicitShutdown关闭模式
  • #1,101 - 为未处理的异常定义处理程序
  • #1,102 - 处理未处理的异常后关闭应用程序
  • #1,105 - 使用应用程序的Windows集合与其他Windows交互

混合

  • #185 - 使用Blend创建WPF应用程序
  • #186 - 何时使用Blend(与Visual Studio相比)
  • #188 - 使用Blend向窗口添加控件
  • #190 - 使用Blend向控件添加事件处理程序
  • #192 - 使用Blend设置控件的属性
  • #193 - 您可以在Blend和Visual Studio中同时打开一个项目
  • #194 - Hello WPF World,Love Blend
  • #287 - 通过编辑XAML向混合中的窗口添加控件
  • #289 - 在Blend中编辑WPF代码隐藏
  • #295 - Blend提供Intellisense
  • #414 - 在Expression Blend中创建网格
  • #427 - 改变混合内的边距
  • #428 - 从Blend中设置其他布局属性
  • #433 - 在Blend中编辑网格时保留边距
  • #434 - Blend中的Canvas布局模式
  • #511 - Blend Basics - 工具面板
  • #512 - Blend中屏幕的区域
  • #513 - 在Blend中使用选择工具
  • #514 - 在Blend中选择对象的不同方法
  • #515 - 在画板上放大和缩小
  • #516 - 使用钢笔工具在混合中绘制路径
  • #517 - 使用钢笔工具绘图时的XAML输出
  • #518 - 使用直接选择工具更改路径中的点
  • #519 - 将点添加到现有路径
  • #520 - 使用铅笔工具绘制路径
  • #521 - 钢笔和铅笔工具都生成路径元素
  • #522 - Blend中的键盘快捷键
  • #523 - 在Blend中平移画板
  • #524 - 使用缩放工具放大画板
  • #525 - 使用吸管工具复制颜色
  • #527 - 彩色表达插件连接到Adobe Kuler
  • #528 - 在颜色编辑器中使用吸管工具
  • #529 - 使用油漆桶工具复制属性
  • #530 - 在混合中创建线性渐变
  • #531 - 使用渐变工具调整渐变
  • #532 - 使用渐变工具移动渐变停止
  • #533 - 使用渐变工具修改径向渐变
  • #534 - 使用Blend中的形状工具绘制形状
  • #535 - 在Blend中绘制对称形状
  • #536 - 使用Blend中的工具面板添加布局面板
  • #537 - 将布局面板更改为其他类型
  • #538 - 混合中需要自动添加XAML结束标记
  • #539 - 在Blend中添加基于文本的元素
  • #540 - 在Blend中添加公共控件
  • #541 - 在Blend的Assets面板中添加元素
  • #542 - 最近使用的资产
  • #543 - 在资产面板中搜索控件
  • #544 - 对象和时间轴面板显示逻辑树
  • #545 - 锁定对象以防止更改
  • #546 - 在Blend中添加渐变停止
  • #547 - 在Blend中按名称指定颜色
  • #548 - 更改混合中渐变停止的偏移
  • #549 - 比你知道更多的颜色该怎么做
  • #550 - 将画笔转换为Blend中的资源
  • #551 - 资源列在Blend的Resources选项卡下
  • #552 - 设置属性以使用现有资源
  • #553 - 在Blend中设置Alpha值
  • #554 - 使用不透明蒙版
  • #555 - 创建径向不透明蒙版
  • #558 - 使用混合反转渐变
  • #559 - 在混合中绘制蒙面渐变
  • #565 - 无法在Blend中以设计模式滚动ScrollViewer的解决方法
  • #566 - 在混合中设置效果的属性
  • #567 - 在Blend中设置布局相关属性
  • #568 - 在Blend中设置与文本相关的属性
  • #569 - 在Blend中设置变换
  • #570 - 使用Blend搜索属性
  • #571 - 在Blend中移动Windows
  • #572 - 您可以在混合GUI之外移动Windows
  • #573 - Blend中的工作区

  • #556 - 使用不透明蒙版剪切到边框
  • #557 - 将图像用作不透明蒙版
  • #560 - 使用径向渐变创建3D效果

命令

  • #342 - 将按钮绑定到命令
  • #343 - 将多个控件与同一命令关联
  • #344 - CommandBinding CanExecute事件确定是否启用了按钮
  • #345 - WPF命令模型优于传统事件处理程序模型
  • #346 - 使用命令时无需为MenuItem设置标题属性
  • #347 - 如何根据命令设置按钮的内容属性
  • #348 - 预定义的命令对象,第一部分
  • #349 - 预定义的命令对象,第二部分
  • #1,078 - 使用Lambda表达式定义命令绑定
  • #1,079 - 以编程方式执行命令
  • #1,080 - 预先存在的命令的命令文本自动本地化
  • #1,081 - 将CommandBinding添加到顶级CommandBindings
  • #1,082 - 将CommandBindings添加到单个UI元素
  • #1,083 - 在XAML中设置CommandBindings
  • #1,084 - KeyBinding将命令绑定到键
  • #1,085 - 输入绑定不要求元素绑定到命令
  • #1,086 - 在XAML中定义键绑定
  • #1,087 - 将密钥绑定与多个修改键关联
  • #1,091 - 使用CommandTarget更改路由命令的源
  • #1,092 - 使用CommandTarget的示例
  • #1,093 - 在执行命令之前拦截命令
  • #1,095 - 创建和使用自定义命令
  • #1,096 - RoutedUICommand添加文本属性
  • #1,097 - 在上下文菜单中获取项目以正确使用命令绑定
  • #1,199 - 完成WPF命令示例

控制

  • #21 - WPF控制采样器
  • #22 - 布局控制
  • #27 - 类层次结构
  • #28 - DispatcherObject
  • #34 - ContentControl
  • #35 - ItemsControl
  • #177 - 内容演示者是内容控件内容的占位符
  • #178 - 控件可以同时具有控制模板和数据模板
  • #179 - 面板控件包含UIElement Children
  • #207 - 设置控件的背景颜色
  • #209 - 指定XAML中预期刷子的颜色
  • #243 - 使用标签控件显示文本
  • #244 - 使用TextBlock元素进行更丰富的格式化
  • #245 - 使用TextBlock控件轻松内联文本格式代码
  • #246 - 使用FlowDocument控件来托管整个文档
  • #247 - 可以在FlowDocument中使用的块类型
  • #248 - 在FlowDocument中创建一个列表
  • #249 - 在FlowDocument中创建表
  • #250 - 在FlowDocument中包含Section Block
  • #251 - 在FlowDocument中嵌入UIElement
  • #252 - FlowDocument自动流式传输其内容
  • #253 - FlowDocument自动托管在FlowDocumentReader中
  • #254 - 托管FlowDocument的容器类型
  • #255 - FlowDocument中图像周围的流文本
  • #256 - 使用FixedDocument在固定位置显示内容
  • #257 - TextBox控件允许基本文本输入和编辑
  • #258 - RichTextBox允许比TextBox更丰富的格式
  • #259 - 为使用OpenType字体渲染的文本设置印刷术属性
  • #267 - 在对控件进行子类化之前考虑两次
  • #269 - 自动调整窗口大小以适合其内容
  • #270 - 最小和最大窗口大小
  • #271 - 更改窗口的调整大小行为
  • #272 - 在窗口周围显示边框
  • #273 - 使用图像控件显示图片
  • #274 - 将图像作为二进制资源嵌入到项目中
  • #275 - 将松散的图像文件加载到图像控件中
  • #276 - 使用拉伸属性更改图像大小
  • #277 - 图像可能嵌入了DpiX和DpiY信息
  • #278 - 让图像变得更大,但不是更小(或反之亦然)
  • #279 - 在图像控件周围添加边框
  • #280 - 图像的对齐属性
  • #281 - 为图像控件提供更多带边距的空间
  • #282 - 保证金属性存储厚度值
  • #283 - 一个窗口只能有一个子元素
  • #284 - 使用不透明度属性使图像半透明
  • #285 - 旋转图像
  • #286 - 通过编辑XAML在Visual Studio中向窗口添加控件
  • #296 - 从Control类派生的控件
  • #297 - 创建控件或图像的镜像
  • #298 - 按钮基础 - 内容和点击
  • #299 - 控件不需要名称
  • #300 - Button是一个ContentControl
  • #301 - 使用访问密钥
  • #302 - 没有标题的控件的访问键
  • #303 - 使用下划线为控件定义访问键
  • #304 - 定义一个关注不同控件的访问键
  • #305 - 定义访问密钥的准则
  • #306 - 键盘焦点
  • #307 - 在应用程序启动时将焦点放在控件上
  • #308 - 检查哪个控件具有键盘焦点
  • #309 - 键盘焦点与逻辑焦点
  • #310 - 提供控制逻辑焦点
  • #311 - 把重点放在控制上,第二部分
  • #312 - 在窗口中指定默认按钮
  • #313 - 在窗口中指定取消按钮
  • #314 - 默认和取消按钮的典型用法
  • #315 - 将IsDefault和IsCancel设置为相同的按钮
  • #316 - 更改按钮的ClickMode
  • #317 - 标签基础
  • #318 - TextBox基础知识
  • #328 - 使用填充属性的控件
  • #338 - 设置控件的前景色
  • #339 - 将按钮的文本内容包装到多行
  • #340 - 创建带图像的按钮
  • #341 - 创建一个带有图像和文本的按钮
  • #350 - CheckBox基础知识
  • #351 - 将CheckBox的IsChecked属性绑定到布尔变量
  • #352 - 使用IsThreeState属性创建具有不确定状态的CheckBox
  • #353 - 将三态CheckBox绑定到Nullable Bool
  • #354 - 使用三态CheckBox显示其他复选框的状态
  • #355 - 实现三态CheckBox依赖行为
  • #356 - RadioButton基础知识
  • #357 - RadioButton是一个ContentControl
  • #358 - 将RadioButton绑定到枚举类型
  • #359 - ToggleButton基础知识
  • #360 - 将ToggleButton的IsChecked属性绑定到布尔变量
  • #361 - 创建一个内容是图像的ToggleButton
  • #362 - 当用户点击它时更改ToggleButton上的文本
  • #363 - 日历控制基础
  • #364 - 允许用户在日历控件中选择多个日期
  • #365 - CalendarDate的SelectedDate和SelectedDates属性
  • #366 - 将Calendar Control的SelectedDate属性绑定到Nullable DateTime
  • #367 - 您无法绑定到Calendar Control的SelectedDates属性
  • #368 - 在日历控件中指定中断日期
  • #371 - 指定要显示的日历控件的默认日期
  • #372 - 定义GUI元素的工具提示
  • #373 - 创建更复杂的工具提示
  • #374 - 使用工具提示显示TextBox的完整内容
  • #375 - 将工具提示中的某些内容绑定到父控件上的属性
  • #376 - 在工具提示中获取文本
  • #377 - 通过将它们定义为资源来重用工具提示
  • #378 - 定位工具提示
  • #379 - 使用工具提示作为放大镜
  • #380 - 帧控件可以托管Web内容
  • #381 - 将.rtf文件加载到RichTextBox中
  • #382 - 将RichTextBox内容保存为XAML
  • #406 - 通过将一个分层叠加在另一个之上来创建新控件
  • #435 - 使用边框元素在元素周围绘制边框
  • #436 - 使用带边框的投影
  • #437 - 在边框上显示圆角
  • #438 - 边界元素可以有背景
  • #439 - 使用带边框的DropShadow,第二部分
  • #474 - 当鼠标移动项目时,隐藏组合框选择突出显示
  • #481 - 您可以使用鼠标在InkCanvas控件上绘图
  • #482 - 您可以在InkCanvas中包含其他控件
  • #483 - InkCanvas MinHeight和MinWidth
  • #484 - InkCanvas包含一个笔划集合
  • #486 - InkCanvas支持不同的编辑模式
  • #487 - 绘制到InkCanvas时指定DrawingAttributes
  • #488 - 您可以在InkCanvas中更改现有笔划的绘图属性
  • #489 - 使用InkCanvas识别手势,第一部分
  • #490 - 使用InkCanvas识别手势,第二部分
  • #491 - 显示超链接
  • #493 - 设置用户界面元素的可见性
  • #499 - 与发起事件的控件交互
  • #504 - GroupBox基础知识
  • #505 - GroupBox的标题可以是任何东西
  • #506 - 使用ComboBox作为GroupBox标头
  • #507 - 扩展器控制允许您展开/折叠一组控件
  • #508 - 显示旋转忙指示符
  • #509 - 在数据模板中显示忙指示符
  • #510 - 扩展器的头部可以是任何东西
  • #577 - 您可以在运行时更改DockPanel.Dock属性
  • #623 - 可聚焦属性指示控件是否可以获得焦点
  • #634 - 修改TextChanged事件中的文本
  • #639 - 默认选项卡顺序是明智的
  • #640 - 将TabIndex属性设置为Change Tab Order
  • #641 - IsTabStop和Focusable之间的区别
  • #642 - 可聚焦和IsTabStop结合使用
  • #643 - 禁用控件无法获得焦点
  • #644 - 禁用和隐藏控件
  • #663 - IsMouseOver如何为嵌套元素工作
  • #715 - 使用Thumb控件拖动画布上的对象
  • #716 - 使用边框作为可以拖动控件的视觉指示
  • #725 - 使用扩展的WPF工具包
  • #726 - 扩展WPF工具包中的示例控件
  • #809 - 您可以使用画笔作为控件的背景
  • #810 - 从代码设置前景和背景属性
  • #811 - 根据系统颜色设置代码中的颜色值
  • #812 - 使用TextDecorations属性在文本下划线或打击
  • #813 - 在文本块的中间应用TextDecorations
  • #828 - ListView和GridView数据绑定示例
  • #833 - CheckBox是一个ContentControl
  • #834 - 在TabControl的选项卡上显示自定义内容
  • #835 - 在GroupBox标题中显示自定义内容
  • #836 - 将ContentControl的内容设置为CLR对象
  • #837 - 窗口不能是ContentControl的子窗口
  • #838 - 使用Label的访问键将焦点放在另一个控件上
  • #839 - 标签的目标可能有自己的标签
  • #840 - 访问键在窗口内应该是唯一的
  • #841 - 始终显示访问密钥的下划线
  • #842 - Label和TextBlock之间的差异
  • #843 - TextBlock中的文本对齐
  • #844 - TextBlock支持连字符
  • #845 - 在TextBlock中显示省略号以指示内容不适合
  • #846 - 在标签中包含下划线字符
  • #847 - 默认按钮行为取决于焦点
  • #848 - 对于Button,IsDefaulted vs. IsDefault
  • #849 - 你可以按下RepeatButton
  • #850 - 指定RepeatButton的延迟和间隔
  • #851 - 使用RepeatButtons移动东西
  • #852 - 将三态CheckBox设置为不确定值
  • #853 - CheckBox总是处于不确定状态
  • #854 - CheckBox的Clicked与Checked / Unchecked事件
  • #855 - RadioButtons根据其容器分组
  • #856 - 将RadioButtons放在GroupBox中
  • #857 - 手动分组RadioButtons
  • #858 - 如何设置工具提示的属性
  • #859 - 更改显示工具提示的时间量
  • #860 - 使工具提示部分透明
  • #861 - 工具提示延迟和时间
  • #862 - 更改所有应用程序的默认工具提示延迟
  • #863 - 禁用控件时通常不显示工具提示
  • #864 - 使用控件模板更改工具提示的外观
  • #865 - 工具提示可以超越窗口边界
  • #866 - 显示弹出窗口
  • #867 - 使用数据绑定控制是否打开弹出窗口
  • #868 - 弹出窗口默认打开
  • #869 - 不要打开弹出窗口
  • #870 - Popup是一个ContentControl
  • #871 - 弹出控件自动调整大小以适应其内容
  • #872 - 动画弹出窗口
  • #873 - 使用弹出窗口而不是工具提示
  • #874 - 设置弹出窗口的背景
  • #875 - 弹出控件不需要边框
  • #876 - 默认弹出窗口放置
  • #877 - 将弹出窗口设置为相对于另一个控件
  • #878 - 相对于另一个控件定位弹出窗口的选项
  • #879 - 相对于鼠标定位弹出窗口
  • #880 - 定位弹出窗口时添加偏移量
  • #881 - 将弹出窗口相对于任意矩形定位
  • #882 - 屏幕边界的弹出位置
  • #883 - ScrollViewer是一个ContentControl
  • #884 - 使StackPanel滚动更加智能化
  • #885 - 在ScrollViewer中包装网格
  • #886 - 在ScrollViewer中包装画布
  • #887 - 禁用和隐藏滚动条可见性之间的区别
  • #888 - 在ScrollViewer中滚动内容的不同方法
  • #889 - 从代码中滚动ScrollViewer
  • #890 - 在ScrollViewer中将控件置于视图中
  • #891 - 更改GroupBox的边框
  • #892 - 更改GroupBox中所有内容的字体
  • #893 - 创建一个带边框但没有标题的GroupBox
  • #894 - 创建一个带有标题但没有边框的GroupBox
  • #895 - 将水印添加到GroupBox
  • #896 - TabControl将内容分组为一系列页面
  • #897 - TabItem上的内容不会自动换行
  • #898 - 设置TabItem上出现的文本
  • #899 - 在TabControl的选项卡上显示多个控件
  • #900 - 更改TabControl中使用的字体
  • #901 - 在TabControl中滚动内容
  • #902 - TabControl自动创建多行选项卡
  • #903 - 在TabControl的不同侧面放置选项卡
  • #904 - 将RadioButton放在TabControl中
  • #905 - 当用户更改TabControl上的选项卡时执行某些代码
  • #906 - 以编程方式更改TabControl上的当前选项卡
  • #907 - 将TabControl绑定到对象列表,第一部分
  • #908 - 将TabControl绑定到对象列表,第II部分
  • #909 - 将TabControl绑定到对象列表,第III部分
  • #910 - 使用数据绑定来控制TabControl的当前选定选项卡
  • #911 - 使用ItemTemplate控制选项卡上的内容
  • #912 - 扩展扩展器将触发布局
  • #913 - 更改扩展器扩展的方向
  • #914 - 在扩展器周围绘制边框
  • #915 - 延迟扩展器内容的生成
  • #916 - 在扩展器控件中滚动内容
  • #917 - 扩展扩展器时改变某些东西
  • #918 - 限制用户可以输入多少文本到TextBox中
  • #919 - 更改TextBox的边框
  • #920 - 适合其内容的TextBox大小
  • #921 - TextBox控件中可用的键盘快捷键
  • #922 - TextBox控件中可用的鼠标快捷方式
  • #923 - 文本框中的文本环绕
  • #924 - TextBox Wrap vs. WrapWithOverflow
  • #925 - 滚动没有包装的TextBox文本
  • #926 - 包含嵌入式托架的文本自动返回换行
  • #927 - 限制TextBox的大小
  • #928 - TextBox.MinLines在启动时无法正确调整大小
  • #929 - 允许TextBox中的多行输入
  • #930 - LineCount属性表示TextBox中的行数
  • #931 - 从代码中滚动文本框中的文本
  • #932 - 使TextBox成为只读或禁用
  • #933 - 在TextBox中剪切/复制/粘贴功能
  • #934 - TextBox具有内置的撤消功能
  • #935 - 设置TextBox的撤消限制
  • #936 - 反映当前所选文本的TextBox属性
  • #937 - 从代码中选择TextBox中的文本
  • #938 - 更改TextBox中的选定文本颜色
  • #939 - 从TextBox中检索单个文本行
  • #940 - 轻松选择TextBox中的整个单词
  • #941 - 强制TextBox中的大写或小写
  • #942 - TextBox中的文本对齐
  • #943 - 启用TextBox中的拼写检查
  • #944 - 在TextBox中输入特殊字符
  • #945 - 限制TextBox中允许文本的策略
  • #947 - 在TextBox中拦截粘贴操作
  • #948 - 限制TextBox输入的完整示例
  • #949 - 在TextBox中添加拼写检查的自定义词典
  • #950 - PasswordBox允许输入密码
  • #957 - 一些基于列表的控件的调查
  • #958 - 填充列表控件的三种方法
  • #959 - ListBox基础知识
  • #960 - ListBox可以存储不同类型的对象
  • #961 - ListBox有三种可用的选择模式
  • #969 - ListBox的Items属性包含Items列表
  • #970 - 避免直接使用物品集合
  • #971 - 项目属性是内容属性
  • #972 - 如何呈现ListBox项
  • #973 - ListBox的键盘快捷键
  • #974 - 用于检索ListBox中所选项的属性
  • #975 - ListBox的SelectedValue和SelectedValuePath
  • #976 - ItemsControl上的SelectedItem绑定是双向的
  • #977 - DisplayMemberPath指示用于显示绑定项的属性
  • #978 - 发现是否选择了ListBox中的项目
  • #979 - 以编程方式选择ListBox中的项目
  • #980 - 将ListBox选择绑定到绑定对象上的属性
  • #981 - 在ListBox中包含CheckBox和每个项目
  • #982 - 列表框中的选定项目更改时执行代码
  • #983 - 使用CollectionViewSource对ListBox中的项进行排序
  • #984 - 使用CollectionViewSource对ListBox中的项进行分组
  • #985 - 在ListBox中显示可扩展组
  • #986 - 使用CollectionViewSource过滤ListBox
  • #987 - 关于刷新或更改为集合的CollectionViewSource更新
  • #988 - 在CollectionViewSource中启用实时排序
  • #989 - 在CollectionViewSource中启用实时过滤
  • #990 - 键入文本以在ListBox中选择项目
  • #991 - 通过键入指定用于查找项目的字段
  • #992 - 将ListBox中的项目滚动到View中
  • #993 - ListBox的默认控制模板
  • #995 - ListBox默认使用UI虚拟化
  • #996 - 关闭ListBox中的UI虚拟化
  • #998 - 水平定位ListBox
  • #999 - 使用Canvas作为ListBox的Items面板
  • #1,000 - 在圆圈中显示ListBox的内容
  • #1,001 - 在ItemsControl中设置交替背景颜色
  • #1,002 - 在ItemsControl中为AlternationCount使用更大的值
  • #1,003 - 在ListBox中将CanContentScroll设置为False以进行平滑滚动
  • #1,004 - 设置CanContentScroll禁用虚拟化
  • #1,005 - 启用延迟滚动以获得更好的性能
  • #1,006 - ListBox中的滚动条显示为需要
  • #1,007 - 更改ListBox的滚动条设置
  • #1,008 - ComboBox基础知识
  • #1,009 - ComboBox数据绑定基础知识,第一部分
  • #1,010 - ComboBox数据绑定基础知识,第二部分
  • #1,011 - ComboBox数据绑定基础知识,第三部分
  • #1,012 - 使用不同的数据模板面对ComboBox
  • #1,013 - 键入文本以选择ComboBox中的项目
  • #1,014 - 键入文本以选择组合框中的项目,第II部分
  • #1,015 - 键入文本以选择组合框中的项目,第III部分
  • #1,016 - 在WrapPanel中显示项目集合
  • #1,017 - 使用滑块缩放列表中的项目
  • #1,018 - 滑块基础知识
  • #1,019 - 将滑块约束为整数值
  • #1,020 - 在滑块上显示刻度标记
  • #1,021 - 在滑块上定位刻度线的两种方法
  • #1,022 - 渲染不同颜色的刻度标记
  • #1,023 - 显示显示滑块值的工具提示
  • #1,024 - 使滑块循环通过枚举类型的值
  • #1,025 - 滑块价值的小而大的变化
  • #1,026 - 水平和垂直滑块
  • #1,027 - 在滑块上显示子范围
  • #1,028 - ProgressBar基础知识
  • #1,029 - 简单的ProgressBar示例
  • #1,030 - 显示不确定的进度条
  • #1,031 - 从后台线程更新ProgressBar
  • #1,033 - ProgressBar可以是水平或垂直的
  • #1,034 - 限制日历中可选日期的范围
  • #1,035 - DatePicker基础知识
  • #1,036 - DatePicker控件中的日期格式
  • #1,037 - 手动将文本输入DatePicker
  • #1,038 - 防止某些日期被选中的另一种方法
  • #1,039 - 拦截输入DatePicker的错误日期字符串
  • #1,043 - 使用DockPanel作为ListBox的Items面板
  • #1,088 - 删除密钥绑定
  • #1,089 - 向命令添加参数
  • #1,090 - CommandBinding事件处理程序中的发件人与源
  • #1,094 - 禁用TextBox中的编辑操作
  • #1,135 - 创建自定义控件的替代方法
  • #1,136 - WPF控件看起来很糟糕
  • #1,141 - 附加属性允许自定义现有控件
  • #1,142 - 从代码设置附加属性值
  • #1,143 - StreamGeometry的坐标系
  • #1,144 - 自定义形状中的几何体不会自动缩放
  • #1,145 - 在自定义形状中使用RenderSize
  • #1,163 - 使用控制模板制作可点击图像
  • #1,177 - UIElement与FrameworkElement vs. Control
  • #1,178 - 基于FrameworkElement的自定义元素
  • #1,179 - 自定义FrameworkElement的对齐和边距属性
  • #1,180 - 默认情况下,FrameworkElement没有所需的大小
  • #1,181 - 自定义元素表示MeasureOverride中的所需大小
  • #1,182 - 在自定义元素中使用RenderSize属性
  • #1,183 - 使用数据模板的位置
  • #1,184 - 使用数据模板的地方,第二部分
  • #1,185 - ItemsControl自定义摘要
  • #1,186 - ListBox的默认ItemContainerStyle
  • #1,187 - 使用ItemContainerStyle更改ItemsControl中的项目
  • #1,188 - 使用ItemContainerStyle为ItemsControl中的项目添加动画效果
  • #1,189 - MeasureOverride输入和输出
  • #1,190 - VisualChildrenCount和GetVisualChild
  • #1,191 - 具有单个子元素的自定义元素
  • #1,192 - 呼叫儿童元素安排
  • #1,193 - MeasureOverride和Margins
  • #1,194 - 所需的儿童元素大小包括边距
  • #1,198 - 在禁用面板中有选择地启用子元素

数据绑定

  • #25 - 数据绑定概述
  • #126 - 使用绑定对依赖属性更改做出反应
  • #369 - 将标签的内容绑定到当前日期和时间
  • #370 - 将标签的内容绑定到当前日期和时间,第II部分
  • #395 - 使用数据绑定的Rich ListBox内容,第一部分
  • #396 - 使用数据绑定的Rich ListBox内容,第二部分
  • #397 - 使用数据绑定的Rich ListBox内容,第III部分
  • #485 - 将ComboBox绑定到枚举类型的值列表
  • #494 - 使用值转换器绑定到可见性属性
  • #495 - 在不使用值转换器的情况下绑定到可见性属性
  • #635 - 使用值转换器更改用户输入
  • #825 - CheckBox的双向绑定
  • #964 - ListBox数据绑定基础,第一部分
  • #965 - ListBox数据绑定基础知识,第二部分
  • #966 - ListBox数据绑定基础知识,第三部分
  • #967 - ListBox数据绑定基础知识,第四部分
  • #968 - ListBox数据绑定基础知识,第五部分
  • #1,137 - 值转换器基础知识
  • #1,138 - 输出的值转换器示例
  • #1,139 - 输入值转换器示例
  • #1,140 - 在模板中使用值转换器

依赖属性

  • #29 - 依赖属性
  • #133 - 依赖属性获取其值的位置
  • #134 - 依赖属性值来源:#1 - 本地值
  • #135 - 依赖属性值源:#2 - 父模板触发器
  • #136 - 依赖属性值来源:#3 - 父模板
  • #137 - 风格属性的价值来自三个地方之一
  • #138 - 依赖属性值来源:#4 - 隐式样式
  • #139 - 依赖属性值来源:#5 - 样式触发器
  • #140 - 依赖属性值源:#6 - 模板触发器
  • #141 - 依赖属性值来源:#7 - 样式制定者
  • #142 - 依赖属性值来源:#8 - 主题样式触发器
  • #143 - 依赖属性值来源:#9 - 主题样式
  • #144 - 依赖属性值来源:#10 - 继承
  • #145 - 依赖属性值来源:#11 - 默认值
  • #146 - 使用GetValueSource方法查找依赖属性值的来源
  • #147 - 如果要在控件中设置依赖属性值,请使用SetCurrentValue
  • #148 - 使用表达式设置的属性值覆盖基值
  • #149 - 使用PropertyChanged和Coercion回调来强制属性之间的依赖关系
  • #150 - 使用PropertyChanged和CoerceValue回调的示例
  • #151 - 依赖属性记住非强制值
  • #152 - 使用ReadLocalValue()查找依赖项属性的本地值
  • #153 - 您可以为任何依赖项对象设置任何依赖项属性的值
  • #154 - 重用类中的现有依赖项属性
  • #155 - 实现附加的依赖属性
  • #156 - 使用Tag属性存储带元素的自定义数据
  • #157 - 您可以从XAML设置标准CLR属性
  • #158 - 何时创建自定义依赖项属性
  • #159 - 创建只读依赖属性
  • #160 - 从DependencyObject构造函数设置依赖项属性值时要小心
  • #161 - 读取依赖属性的元数据
  • #162 - UIPropertyMetadata和FrameworkPropertyMetadata
  • #163 - 构建FrameworkPropertyMetadata
  • #164 - 覆盖继承的依赖项属性的元数据
  • #165 - 覆盖元数据可能导致合并元数据
  • #166 - 您可以覆盖任何依赖项属性的元数据
  • #167 - 实现一个集合的依赖属性
  • #574 - 实现依赖属性的完整示例
  • #575 - PropertyMetadata与FrameworkPropertyMetadata
  • #1,040 - 依赖属性继承的示例

活动

  • #500 - 在多个控件之间共享事件处理程序,方法I.
  • #501 - 在多个控件之间共享事件处理程序,方法II
  • #502 - Sender vs. RoutedEventArgs.Source
  • #503 - 在投射RoutedEventArgs.Source时要小心
  • #576 - 传统CLR事件的工作原理
  • #579 - 为用户界面元素添加事件处理程序
  • #580 - WPF中的事件已路由
  • #581 - 路由事件的示例
  • #582 - 即使未定义处理程序,也会路由事件
  • #583 - 中断路由进程
  • #584 - 处理已经处理的事件
  • #585 - 隧道事件传播逻辑树
  • #586 - 冒泡和隧道事件通常是配对的
  • #587 - 隧道和冒泡事件的目的
  • #588 - 如果您处理PreviewKeyDown事件,KeyDown将不会触发
  • #589 - 标准隧道/冒泡事件对
  • #590 - 并非所有路由事件都存在于对中
  • #591 - 您可以将任何路由事件附加到任何控件
  • #592 - 在代码中添加事件处理程序
  • #593 - AddHandler方法可以为任何事件添加处理程序
  • #594 - 封面下的路由事件
  • #595 - 定义事件处理程序的语法选择
  • #596 - 声明事件处理程序时使用Lamba表达式
  • #597 - 事件处理程序的命名约定
  • #598 - 路线事件的三种风味
  • #599 - 路由事件的完整示例
  • #600 - 注册路由事件
  • #601 - RoutedEventHandler委托类型
  • #602 - 访问RoutedEventArgs中的信息
  • #603 - Sender,Source和OriginalSource示例
  • #604 - 定义新的路由事件
  • #605 - 使用RoutedEventArgs的子类
  • #606 - 重复使用课程中的现有路由事件
  • #607 - 实例处理程序与类处理程序
  • #608 - 在实例处理程序之前调用类处理程序
  • #609 - 在Window.Loaded Handler中执行初始化
  • #615 - FrameworkElement对象的标准对象生命周期事件
  • #616 - FrameworkElement.Initialized和Loaded Event Order
  • #617 - 输入事件
  • #618 - 键盘事件摘要
  • #619 - 键上/下事件的事件序列
  • #620 - 为什么有这么多KeyPress事件?
  • #621 - 处理预览Keypress事件的示例
  • #622 - 键盘事件的来源
  • #624 - 关键上/下事件可用的信息
  • #625 - 将Keypress时间戳转换为DateTime
  • #626 - 使用CTRL键时的键上/下序列
  • #627 - 检测是否在KeyDown事件处理程序中按下Ctrl键
  • #628 - 使用ALT键时的按键上/下行序列
  • #629 - 某些控件可能会吞下Keypress事件
  • #628 - 使用ALT键时的按键上/下行序列
  • #629 - 某些控件可能会吞下Keypress事件
  • #630 - PreviewTextInput和TextInput事件
  • #631 - KeyPressUp,KeyPressDown和TextInput的事件序列
  • #632 - 使用PreviewTextInput阻止输入
  • #633 - TextBox文本更改后TextChanged事件触发
  • #636 - 按住键时触发的键盘事件
  • #637 - 通过设置Handled为true来阻止重复键
  • #638 - 在许多情况下,PreviewTextInput未被触发
  • #645 - 检查是否存在修饰键
  • #646 - 在Keypress处理程序中检测Key的切换状态
  • #647 - 您可以将任何键视为切换键
  • #648 - 检查任意键的切换状态
  • #649 - KeyStates属性结合了IsDown和IsToggled
  • #650 - 从任何方法获取有关键盘键的信息
  • #651 - 使用键盘类的静态成员
  • #652 - 鼠标事件摘要
  • #653 - MouseMove事件
  • #654 - 按钮按下的鼠标事件
  • #655 - 某些控件吞噬了冒泡的鼠标事件
  • #656 - 鼠标按钮事件处理程序可用的数据
  • #657 - 检测用户界面元素中的双击
  • #658 - 处理鼠标双击的更简单方法
  • #659 - 检测三击
  • #661 - ButtonBase.Click事件与鼠标单击事件
  • #662 - IsMouseOver属性
  • #664 - MouseEnter和MouseLeave事件
  • #665 - 对MouseEnter / MouseLeave事件做出反应
  • #666 - 使用触发器对鼠标进行控制
  • #667 - IsMouseOver与IsMouseDirectlyOver
  • #668 - 检索鼠标的当前位置
  • #669 - 在事件处理程序中检索鼠标的当前位置
  • #670 - 相对于特定元素获取鼠标位置
  • #671 - Mouse.GetPosition仅在鼠标位于窗口时有效
  • #672 - 鼠标坐标位于设备无关单元中
  • #675 - 处理PreviewMouseWheel和MouseWheel事件
  • #676 - MouseWheel事件被触发鼠标指针结束的元素
  • #677 - 为什么标准鼠标滚轮Delta为120
  • #678 - 使用IsHitTestVisible属性隐藏鼠标中的元素
  • #679 - 将IsHitTestVisible设置为False可防止与控件交互
  • #680 - IsHitTestVisible适用于所有子元素
  • #681 - 隐藏,折叠或隐藏可见性时没有鼠标事件
  • #682 - 面板元素仅在设置背景时触发鼠标事件
  • #683 - MouseUp可以在MouseDown的不同控制下发生
  • #684 - 鼠标结束的元素出现鼠标事件
  • #685 - 捕获鼠标
  • #687 - 如果忘记释放鼠标会发生什么
  • #689 - 应用程序可能会丢失其鼠标捕获
  • #690 - 当鼠标捕获丢失时被通知
  • #691 - IsMouseCaptured指示当前是否捕获了鼠标
  • #692 - 通用控件通常不捕获鼠标
  • #693 - TextBox控件支持拖放
  • #694 - 自定义拖放行为的示例
  • #695 - 实现拖放行为
  • #696 - 丢弃目标可以从其他应用程序接收数据
  • #697 - 将数据拖出应用程序
  • #700 - 将图像拖动到Microsoft Word
  • #701 - 在WPF应用程序之间拖动图像
  • #702 - 在WPF应用程序中拖动图像
  • #703 - 指示允许丢弃的格式
  • #704 - 转义键取消拖放行为
  • #705 - 使用序列化作为格式拖动自定义对象
  • #706 - 在应用程序之间拖动用户界面元素
  • #707 - 将项目列表从WPF应用程序拖动到Excel中
  • #708 - 将文件拖到WPF应用程序中
  • #710 - DoDragDrop是阻止呼叫
  • #711 - 拖动时更改鼠标光标
  • #712 - 拖动时显示自定义鼠标光标
  • #713 - 拖动时将光标设置为UIElement的图像
  • #714 - 设置光标以在拖动时渲染某些文本
  • #717 - 在Windows 7上使用Touch拖放
  • #729 - 拖动时Mouse.GetPosition不起作用
  • #730 - 使用QueryContinueDrag事件来了解鼠标按钮状态何时更改
  • #731 - 多点触控的想法
  • #732 - 原始触摸输入的基本事件
  • #733 - 触摸相关事件的完整列表
  • #734 - 识别触摸事件处理程序中的不同手指
  • #735 - 系统小程序指示最大接触点数
  • #736 - 在运行时查找最大触摸点数
  • #737 - 达到最大触摸点数时的触摸行为
  • #738 - 示例代码 - 在接触点绘制和移动圆圈
  • #739 - 处理不同级别的触摸输入
  • #740 - 将画布背景设置为透明以接收触摸事件
  • #741 - 使用触摸操作事件翻译元素
  • #742 - 使用触摸操作事件旋转元素
  • #743 - 使用触摸操作事件来缩放元素
  • #744 - 在触摸操作期间将元素保持在窗口内
  • #745 - 惯性基础知识
  • #746 - 指定惯性减速度
  • #747 - 在触摸操作期间实现惯性
  • #748 - 在原始触摸期间获取接触点的大小
  • #749 - 处理TouchEnter和TouchLeave事件
  • #750 - 使用触摸操作在一个维度中进行翻译
  • #751 - 指示您支持的触摸操作模式
  • #752 - 通过触摸操作进行缩放时跟踪总比例
  • #753 - ManipulationDelta事件中的规模与扩展
  • #754 - 在触摸操作期间实现扩展惯性
  • #755 - 在触摸操作期间实现旋转惯性
  • #756 - 使用惯性时使元素在窗口边缘停止
  • #1,066 - 元素必须可见并启用以触发事件
  • #1,073 - 附加活动
  • #1,074 - 附加事件语法
  • #1,075 - 触发IsKeyboardFocusWithin属性

字体

  • #260 - 字体的概念
  • #261 - Windows 7中的标准字体
  • #262 - 字体样本表
  • #263 - 指定字体属性
  • #264 - 指定FontWeight的值
  • #265 - 为FontStyle指定值
  • #266 - 指定FontSize的值
  • #268 - 默认FontFamily和FontSize
  • #334 - 为FontFamily指定值
  • #335 - WPF如何在目标系统上查找字体
  • #336 - Intellisense显示开发系统上可用的字体
  • #337 - 在窗口中指定所有控件的字体属性
  • #814 - 您可以指定要尝试的字体列表
  • #815 - 使用所有字体列表填充ListBox
  • #816 - 使用字体对话框选择字体
  • #817 - 将字体嵌入到您的应用程序中
  • #818 - 预览已安装的字体
  • #819 - 在Windows资源管理器中预览TrueType字体
  • #820 - 在Windows资源管理器中查看其他字体属性
  • #821 - 使用TextFormattingMode使文本看起来更清晰
  • #822 - 决定使用哪个TextFormattingMode

图像

  • #24 - 不要在WPF应用程序中使用位图
  • #172 - 对画笔消费者的画笔级联的更改
  • #174 - 预定义的画笔已经冻结
  • #208 - 颜色值存储为RGB值
  • #210 - 将XAML中的颜色指定为RGB值
  • #211 - 在代码中创建颜色值
  • #212 - 创建线性渐变画笔
  • #213 - 更改线性渐变画笔中的渐变线
  • #214 - 在控件内开始/结束渐变填充
  • #215 - 填充区域外的梯度差价的其他选择
  • #216 - 在渐变填充中定义几个不同的渐变停止
  • #217 - 使用径向渐变画笔
  • #218 - 定义径向渐变的焦点
  • #219 - 改变径向渐变的半径
  • #220 - 使用预定义颜色
  • #221 - 在运行时更改画笔
  • #222 - 示例:使用RGB滑块更改颜色
  • #223 - 预定义的系统颜色
  • #224 - 在XAML中使用预定义的系统颜色
  • #225 - 使用将在系统颜色更改时更新的画笔
  • #226 - 渐变填充调整为控件的大小
  • #227 - 您可以指定绝对坐标中的渐变填充
  • #228 - 在控件外开始/结束渐变填充
  • #229 - 为窗口边框使用渐变画笔
  • #230 - 当鼠标移过控件时更改径向渐变
  • #231 - 您可以使用画笔作为控件的前景
  • #232 - DrawingVisual类
  • #233 - 从DrawingVisual类派生的示例
  • #234 - 获取在窗口中渲染的DrawingVisual对象
  • #235 - 可以使用DrawingContext创建的可视内容类型
  • #236 - 将任意几何绘制成DrawingVisual
  • #237 - 使用Shape子类绘制形状
  • #239 - 通过覆盖Shape类创建自定义形状
  • #240 - Shape vs. DrawingVisual
  • #241 - 使用DrawText渲染文本
  • #242 - 使用DrawGlyphRun绘制文本
  • #561 - 使用径向渐变绘制3D甜甜圈
  • #562 - 为混合中的元素设置效果
  • #563 - Expression SDK中的其他效果
  • #564 - 获得第三方效果的其他地方
  • #699 - 将图像控件转换为位图
  • #1,146 - 极坐标系
  • #1,147 - 从极坐标转换为笛卡尔坐标
  • #1,148 - 从极坐标转换为笛卡尔坐标的示例代码
  • #1,149 - 在自定义形状中绘制圆弧
  • #1,150 - 自定义弧形,第二部分
  • #1,151 - 自定义弧形,第三部分
  • #1,152 - 自定义“馅饼切片”形状
  • #1,153 - 处理影响渲染的自定义依赖项属性
  • #1,154 - 为自定义控件中的标准依赖项属性提供默认值
  • #1,155 - 循环进度指标
  • #1,156 - 将循环进度控制更改为仅弧
  • #1,157 - 重写的默认属性值显示在属性窗格中
  • #1,160 - 将文本标签添加到循环进度控制
  • #1,161 - 在控制模板中使用自定义循环进度形状

输入

  • #1,067 - 尝试使用键盘焦点
  • #1,068 - 大多数控件都可以获得键盘焦点
  • #1,069 - 主窗口最初具有键盘焦点
  • #1,070 - 键盘焦点事件的事件序列
  • #1,071 - TextBox如何反应以获得键盘焦点
  • #1,072 - 添加与键盘焦点相关的自定义触发器
  • #1,076 - 检查Keypress处理程序中修改键使用的两种方法
  • #1,077 - 检查单个修改器与多个修改器密钥

布局

  • #180 - 布局如何工作
  • #319 - StackPanel堆栈垂直或水平控制
  • #320 - StackPanel子控件的默认大小
  • #321 - Horizo​​ntalAlignment和VerticalAlignment
  • #322 - 为StackPanel子控件提供显式大小
  • #323 - 使用保证金在StackPanel儿童周围提供空间
  • #324 - 在每个边缘设置不同大小的边距
  • #325 - 在代码中指定保证金价值
  • #326 - 使用两个参数指定对称边距
  • #327 - 使用填充在控件中提供额外空间
  • #329 - WPF中的布局原则
  • #330 - Horizo​​ntalContentAlignment和VerticalContentAlignment
  • #331 - Horizo​​ntalContentAlignment和VerticalContentAlignment的默认值
  • #332 - Horizo​​ntalContentAlignment和VerticalContentAlignment有时不相关
  • #333 - 保证金和填充概述
  • #383 - 基于坐标的布局问题
  • #384 - 基于流的布局的好处
  • #385 - 你可以嵌套面板控件
  • #386 - 布局=面板+ FrameworkElements +对齐/边距/填充
  • #387 - 设置背景颜色以查看布局的工作原理
  • #388 - 布局容器不提供滚动支持
  • #389 - 在ScrollViewer中包装面板以提供滚动支持
  • #390 - ScrollViewer中的滚动条可见性
  • #391 - 抗锯齿可能导致模糊的GUI元素
  • #392 - 使用SnapsToDevicePixels属性来防止抗锯齿
  • #393 - 画布元素
  • #398 - WrapPanel元素
  • #399 - WrapPanel将更改其子项的布局作为其大小更改
  • #400 - 使用WrapPanel作为ListBox的Items面板
  • #401 - DockPanel元素
  • #402 - DockPanel的最终子项默认填充剩余空间
  • #403 - DockPanel儿童的顺序很重要
  • #404 - 网格在行和列中托管子控件
  • #405 - Grid.Row和Grid.Column属性的默认值
  • #407 - 网格默认包含单行和列
  • #408 - ShowGridLines属性允许您查看网格中的单个单元格
  • #409 - 网格大小中的子元素以适合包含单元格
  • #410 - 默认网格行和列大小
  • #411 - 使用Horizo​​ntalAlignment和VerticalAlignment在网格中定位子元素
  • #412 - 在网格中设置行高或列宽的三种方法
  • #415 - 将网格行高度和列宽属性设置为绝对值
  • #416 - 将网格行和列设置为自动调整大小
  • #417 - 使用星形大小在行或列之间均匀分布空间
  • #418 - 星形大小允许相对于彼此设置行和列大小
  • #419 - 使用星形大小时如何计算单元格大小
  • #420 - 您可以使用浮点值进行星号调整
  • #421 - 网格中的Horizo​​ntalAlignment,Margins和Column Width
  • #422 - 设置网格中行和列的最小高度和宽度
  • #423 - 设置网格中行和列的最大高度和宽度
  • #424 - 使ListBox中的数据绑定项具有一致的大小
  • #425 - SharedSizeGroup允许跨不同网格共享列大小
  • #426 - 布局面板也可以有边距
  • #429 - 影响布局的子元素属性
  • #430 - 使用不同的单位设置宽度和高度
  • #431 - 将控件的宽度绑定到其高度
  • #432 - 高度和宽度与ActualHeight和ActualWidth
  • #440 - 对齐属性在WrapPanel中的行为方式
  • #441 - 为WrapPanel中的子元素设置一致的高度/宽度
  • #442 - WrapPanel子元素可以剪裁
  • #443 - 反转WrapPanel中的流向
  • #444 - DockPanel的孩子不一定要被拉伸
  • #445 - DockPanel可以像StackPanel一样使用
  • #446 - DockPanel Children的默认对接
  • #447 - 您可以在DockPanel中使用布局转换
  • #448 - 集合中的数据绑定元素到网格,第一部分
  • #449 - 集合中的数据绑定元素到网格,第二部分
  • #450 - 集合中的数据绑定元素到网格,第III部分
  • #451 - 集合中的数据绑定元素到网格,第IV部分
  • #452 - 集合中的数据绑定元素到网格,第五部分
  • #453 - UseLayoutRounding属性将事物与像素边界对齐
  • #454 - UseLayoutRounding与SnapsToDevicePixels
  • #455 - 使用ItemContainerStyle将集合中的数据元素绑定到网格
  • #456 - 网格中的元素可以跨越多行或多列
  • #457 - 使用GridSplitter让用户更改网格中的行或列大小
  • #458 - 使用水平或垂直GridSplitter时要设置的属性
  • #459 - 在同一网格中使用两个(或更多)GridSplitter元素
  • #460 - GridSplitter可以与另一个控件共享一个单元格
  • #461 - 使GridSplitter看起来是三维的
  • #462 - 绘制一个更好看的GridSplitter
  • #463 - 多个并行GridSplitters
  • #464 - ShowsPreview属性使用GridSplitter延迟行/列大小更改
  • #465 - 将GridSplitters与嵌套网格结合使用
  • #466 - 将GridSplitter与SharedSizeGroup结合使用
  • #467 - 将UniformGrid用于均匀间隔的行和列
  • #468 - FirstColumn属性允许UniformGrid中的空白单元格
  • #469 - 从右到左填充UniformGrid
  • #470 - 支持RightToLeft Flow的元素
  • #471 - FlowDirection如何与图像元素一起使用
  • #472 - UniformGrid默认为正方形
  • #473 - 在画布中定位子元素
  • #475 - 画布中的子元素可以重叠
  • #476 - 为画布的子元素设置ZIndex值
  • #477 - 画布子元素的默认ZIndex值
  • #478 - 四个边距值中的两个用于画布中的元素
  • #479 - 在画布中对子元素使用布局转换
  • #480 - ZIndex值和渲染变换
  • #492 - 布局可以在运行时更改
  • #496 - 使用StackPanel创建一组相同大小的按钮
  • #497 - 使用UniformGrid创建一组相同大小的按钮
  • #578 - 网格行和列大小使用GridLength对象
  • #757 - RenderSize,ActualHeight和ActualWidth
  • #758 - 从LayoutUpdated事件处理程序中访问实际高度和宽度
  • #760 - 水平和垂直对齐基础
  • #761 - FlowDirection如何影响Horizo​​ntalContentAlignment
  • #762 - 基于CurrentUICulture在运行时设置FlowDirection
  • #767 - 变换基础知识
  • #768 - 缩放变换
  • #769 - 旋转变换
  • #770 - LayoutTransform和RenderTransform之间的差异
  • #771 - 设置旋转变换的中心点
  • #772 - 使用RenderTransformOrigin更改旋转变换的中心点
  • #773 - 旋转中心点可以在元素之外
  • #774 - 翻译变换
  • #775 - 歪斜变形
  • #776 - 设置偏斜变换的中心点
  • #780 - 组合变换
  • #781 - 转变订单事项
  • #782 - RenderTransform比LayoutTransform具有更好的性能
  • #786 - 使用数据绑定来控制2D变换
  • #787 - 使用矩阵乘法转换点
  • #788 - 使用比例变换翻转元素
  • #789 - 比例变换的工作原理
  • #790 - 旋转变换的工作原理
  • #791 - 矩阵乘法,第一部分 - 行和列
  • #792 - 矩阵乘法,第二部分 - 乘以一列的行
  • #793 - 矩阵乘法,第III部分 - 程序
  • #794 - 矩阵乘法,第四部分 - 一些例子
  • #795 - 翻译转换的工作原理
  • #796 - WPF转换使用同构坐标
  • #797 - 使用齐次坐标进行缩放变换
  • #798 - 使用齐次坐标的旋转变换
  • #799 - 变革如何结合起来
  • #800 - 变换不影响ActualWidth和ActualHeight
  • #801 - 使用RenderTransform创建镜像
  • #802 - 变换不会影响元素的边距
  • #803 - 使用MatrixTransform指定任意变换
  • #804 - 将MatrixTransform指定为简单字符串
  • #805 - 变换字符串的一些示例
  • #806 - 从代码设置画布中子元素的ZIndex值
  • #807 - 从代码中设置画布中子元素的位置
  • #808 - 如何将形状元素定位在画布中
  • #1,041 - 旋转时拉伸的子元素未拉伸
  • #1,042 - FlowDirection如何影响StackPanel
  • #1,044 - 在网格单元格中放置多个元素
  • #1,045 - 使用ZIndex控制网格中元素的分层
  • #1,046 - 在网格中设置单元格的背景颜色
  • #1,047 - 从代码设置网格的行或列的大小
  • #1,048 - 如何设置GridSplitter的对齐属性
  • #1,049 - 当单元格使用星形大小时,GridSplitter的行为方式
  • #1,050 - 当单元格使用绝对大小时GridTelitter的行为方式
  • #1,051 - 当单元格使用自动调整大小时GridSplitter的行为方式
  • #1,052 - 在网格中制作相同大小的两列
  • #1,053 - SharedSizeGroup如何与列大小调整相关联
  • #1,054 - TabPanel包裹和均匀空间
  • #1,055 - 画布不会剪辑子元素
  • #1,056 - 网格剪辑子元素
  • #1,057 - 防止网格剪切子元素
  • #1,058 - 翻译在布局转换中没有任何意义
  • #1,059 - 网格中的剪切与调整大小
  • #1,060 - 在渲染变换之前发生网格剪辑
  • #1,061 - 使用ViewBox扩展内容
  • #1,062 - 使用ViewBox缩放画布
  • #1,063 - ViewBox拉伸选项
  • #1,064 - 限制ViewBox只在一个方向上缩放
  • #1,065 - ViewBox子项必须具有显式大小
  • #1,162 - 行动布局,第一部分
  • #1,165 - 行动布局,第二部分
  • #1,166 - 行动布局,第三部分
  • #1,167 - 行动布局,第四部分
  • #1,168 - 行动布局,第五部分
  • #1,169 - 自定义面板,第一部分(测量和排列)
  • #1,170 - 自定义面板,第二部分(儿童元素的简单安排)
  • #1,171 - 自定义面板,第III部分(使用DesiredSize)
  • #1,172 - 自定义面板,第四部分(ZIndex)
  • #1,173 - 自定义面板,第五部分(两列)
  • #1,174 - 自定义面板,第VI部分(附属性)
  • #1,175 - 自定义面板,第VII部分(使用附加财产安排)
  • #1,176 - 自定义面板,第八部分(类似树状图的可视化)
  • #1,197 - 在具有最大大小的网格中自动调整大小
  • #1,201 - 如何分享星级柱尺寸

本土化

  • #1,112 - 国际化与本地化
  • #1,113 - 在国际化中使用文化
  • #1,114 - 文化代码
  • #1,115 - 国际化I - 服从当前的文化输出
  • #1,116 - Obeys CurrentCulture的输出示例
  • #1,117 - 国际化II - 服从当前文化的投入
  • #1,118 - Obeys CurrentCulture的输入示例
  • #1,119 - 本地化I - 设置UICulture标签
  • #1,120 - 获取所有支持的文化列表
  • #1,121 - 本地化II - 为所有可本地化元素分配UID
  • #1,122 - 本地化III - 初始创建后更新UID
  • #1,123 - 本地化IV - 下载并构建LocBaml工具
  • #1,124 - 本地化V - 使用LocBaml提取可本地化内容
  • #1,125 - 本地化VI - 解释由LocBaml工具输出的CSV文件
  • #1,126 - 本地化VII - 防止译者修改某些元素
  • #1,127 - 本地化VIII - 将评论传递给译者
  • #1,128 - 本地化IX - 本地化内容
  • #1,129 - 本地化X - 将翻译集成到应用程序中
  • #1,130 - 本地化XI - 卫星集会
  • #1,131 - 本地化XII - 设置NeutralLanguageResources属性
  • #1,132 - 本地化XIII - 验证本地化内容
  • #1,133 - 本地化XIV - 向已经本地化的应用程序添加内容
  • #1,134 - 本地化XV - 本地化其他内容

媒体

  • #8 - 音频和视频
  • #698 - 使用MediaPlayer对象播放MP3文件

  • #115 - 下载所有.NET 4源代码
  • #238 - WPF上最好的书籍
  • #498 - WPF博客和论坛列表
  • #526 - 使用Adobe Kuler创建颜色主题
  • #673 - 将鼠标位置映射到颜色
  • #674 - 将鼠标位置映射到颜色,第II部分
  • #688 - 用鼠标移动元素
  • #709 - 更改光标
  • #718 - 将文本复制到剪贴板和从剪贴板复制文本
  • #719 - ASCII艺术生成器
  • #720 - 发现剪贴板上有哪些数据
  • #721 - 用于查看剪贴板的工具
  • #724 - 检查控制模板的示例代码
  • #727 - 从剪贴板获取文件列表
  • #728 - 使用剪贴板传输其他类型的数据
  • #763 - CurrentCulture与CurrentUICulture之间的差异
  • #764 - 将数据转换为字符串时使用当前文化
  • #765 - WPF数据绑定忽略CurrentCulture
  • #766 - WPF数据绑定忽略自定义格式
  • #783 - 下载和安装WPF Performance Suite
  • #784 - 使用Perforator工具分析WPF应用程序性能
  • #785 - 使用Visual Profiler工具
  • #823 - 从XAML设置光标
  • #824 - 在顶层元素上设置光标
  • #826 - 低级元素可以有不同的光标
  • #827 - 覆盖子元素的光标属性
  • #829 - 从代码设置应用程序范围的游标
  • #830 - 从文件加载光标
  • #831 - 在项目中嵌入光标作为资源
  • #832 - 创建光标文件
  • #946 - 检查字符串中的有效字符
  • #962 - 由Hue组织的颜色选择框,第一部分
  • #963 - 由Hue组织的颜色选择框,第二部分
  • #1,103 - 配置启动画面
  • #1,104 - 启动画面的工作原理
  • #1,106 - 创建单实例应用程序
  • #1,107 - 使用Uri访问嵌入式资源
  • #1,108 - 使用Reflector获取资源列表
  • #1,109 - 访问不同程序集中的资源
  • #1,110 - 使用资源作为内容文件
  • #1,111 - 从XAML引用内容文件

安全

  • #951 - 在字符串中存储机密数据时的安全问题
  • #952 - 托管字符串的安全问题
  • #953 - 使用SecureString对象存储机密文本数据
  • #954 - 仅在SecureString实例中存储机密数据
  • #955 - 从SecureString中获取数据
  • #956 - PasswordBox将密码存储为SecureString

样式

  • #1,200 - 覆盖默认样式

视觉工作室

  • #3 - 开发WPF应用程序的工具
  • #4 - WPF取代Windows窗体
  • #37 - 选择要定位的.NET Framework版本
  • #88 - 查找WPF类型的元数据
  • #89 - 使用Visual Studio跟踪WPF类型的继承链
  • #90 - 在Visual Studio 2010中加入.NET源代码
  • #91 - InitializeComponent()的作用
  • #128 - 使用代码片段实现依赖属性
  • #181 - 创建WPF开发环境
  • #182 - 从Visual Studio或Blend创建WPF项目
  • #183 - Visual Studio 2010和Expression Blend 4中提供的项目类型
  • #184 - 使用Visual Studio创建WPF应用程序
  • #186 - 何时使用Blend(与Visual Studio相比)
  • #187 - 使用Visual Studio向窗口添加控件
  • #189 - 使用Visual Studio向控件添加事件处理程序
  • #193 - 您可以在Blend和Visual Studio中同时打开一个项目
  • #288 - 在Visual Studio中编辑WPF代码隐藏
  • #290 - 在Visual Studio中使用Intellisense
  • #291 - Intellisense列出可用的方法和属性
  • #292 - Intellisense包含有关方法参数的信息
  • #293 - Intellisense将显示重载方法
  • #294 - 在XAML编辑器中也可以使用Intellisense
  • #413 - 从Visual Studio Designer创建网格
  • #722 - 获取Visual Studio 2012的免费副本
  • #723 - 在Visual Studio 2012中关闭所有Caps Men
  • #994 - 从Visual Studio中查看Visual Tree
  • #1,158 - 使用指令进行管理,第一部分
  • #1,159 - 使用指令进行管理,第二部分

视窗

  • #195 - 尊敬的MessageBox
  • #196 - 从MessageBox返回结果
  • #613 - 窗口事件序列
  • #614 - 在Windows之间切换时触发的事件
  • #660 - 在Windows 8中更改双击速度
  • #1,032 - 在Windows任务栏图标上显示进度
  • #1,195 - 使窗口部分透明
  • #1,196 - 使窗户完全透明

XAML

  • #56 - XAML
  • #57 - 标记与代码
  • #58 - 使用XAML的其他地方
  • #59 - Visual Studio 2010中的XAML
  • #60 - Expression Blend中的XAML
  • #61 - 从Expression Design导出XAML
  • #62 - BAML是编译的XAML
  • #65 - XAML词汇表
  • #66 - XAML元素映射到.NET类型的实例
  • #67 - XAML属性映射到属性值
  • #68 - 嵌套XAML元素表达遏制
  • #69 - Internet Explorer可以直接解释XAML
  • #70 - 在XAML中指定事件处理程序
  • #71 - XAML文件具有单个根元素
  • #72 - XAML命名空间
  • #73 - 使用前缀的多个命名空间
  • #74 - 属性元素语法
  • #75 - 有时你必须使用属性元素语法
  • #76 - XAML中的两种元素
  • #77 - XAML集合语法
  • #78 - 通过设置子元素设置内容属性的值
  • #79 - 常见WPF类型的内容属性
  • #80 - 内容属性和集合语法Express UIElement Containment
  • #81 - XAML区分大小写
  • #82 - XAML如何处理空白
  • #83 - 只读与读写属性的集合语法
  • #84 - 将可重用对象存储在资源字典中
  • #85 - 每个WPF XAML文件中使用的两个主要命名空间
  • #86 - 类属性指向您的代码 - 背后
  • #87 - 类型转换器
  • #92 - 标记扩展
  • #93 - 使用属性元素语法指定标记扩展
  • #94 - 命名元素
  • #95 - x:名称与名称
  • #96 - 常见的XAML命名空间属性
  • #97 - 附加属性
  • #98 - WPF中附加属性的工作原理
  • #99 - 在XAML中创建自定义对象
  • #100 - 松散的XAML文件
  • #101 - Visual Studio对您的XAML执行的操作
  • #102 - 使用XamlReader加载松散的XAML文件
  • #103 - XAML 2009
  • #104 - 使用FindName查找控件的命名子级
  • #105 - 将BAML视为XAML
  • #106 - 将属性值设置为指向另一个对象
  • #107 - XAML命名空间中的标记扩展

Below is a list of all posts created so far for the 2,000 Things You Should Know About WPF blog.

Total number of posts = 1,201

Animation

  • #7 – Property-Based Animation
  • #686 – Using Animation to Make an Image Pulse
  • #777 – Animating a Transform
  • #778 – Animating a Scale Transform
  • #779 – Animating a Rotation Transform
  • #1,164 – Using Animation to Bounce a Control

Basics

  • #1 – What is WPF?
  • #2 – Rendering Tiers
  • #5 – Vector Graphics and Resolution Independence
  • #6 – WPF Layout
  • #9 – Styles
  • #10 – Control Templates
  • #11 – Commands
  • #12 – Markup and Code Behind
  • #13 – Benefits of Markup
  • #14 – Page-Based Navigation
  • #15 – WPF vs. Silverlight and ASP.NET
  • #16 – Use Direct3D for Hard-Core 3D Applications
  • #17 – WPF Release History
  • #18 – Silverlight and WPF Differences
  • #19 – The System.Windows Namespace
  • #20 – Standalone and Browser-Hosted Applications
  • #23 – WPF Units
  • #26 – WPF Architecture
  • #30 – Visual Class
  • #31 – UIElement Class
  • #32 – FrameworkElement
  • #33 – Control Class
  • #36 – Five Types of WPF Applications
  • #38 – The Application Class
  • #39 – The Window Class
  • #40 – Application Lifetime
  • #41 – Window Events at Startup and Shutdown
  • #42 – WPF Application Entry Point
  • #43 – What Happens in WPF Main() Function
  • #44 – Application is a Singleton
  • #45 – Two Ways to Create WPF Controls
  • #46 – Processing Command Line Arguments in a WPF Application
  • #47 – Detecting When the Windows Session Is Ending
  • #48 – Handling an Application’s Exit Event
  • #49 – Unhandled Exceptions
  • #50 – Application-Scoped Properties
  • #51 – Resources
  • #52 – Defining and Using Application-Scoped Resources
  • #53 – Accessing Application-Scoped Resources from Code
  • #54 – An Application’s Main Window
  • #55 – Application.ShutdownMode
  • #63 – Three Places to Make Changes
  • #64 – Visual Studio Creates XAML For You
  • #108 – The Logical Tree
  • #109 – Navigating the Logical Tree in Code
  • #110 – An Application for Viewing a WPF Logical Tree
  • #111 – The Visual Tree
  • #112 – Navigating the Visual Tree in Code
  • #113 – An Application for Viewing a WPF Visual Tree
  • #114 – How Dependency Properties Are Implemented
  • #116 – Dependency Property Values Are Stored in the DependencyObject
  • #117 – Registering a Dependency Property
  • #118 – Don’t Add Code to Dependency Property Getter/Setter
  • #119 – Read and Write Dependency Property Values from XAML or Code
  • #120 – Clearing a Dependency Property Value
  • #121 – Being Notified When the Value of a Dependency Property Changes
  • #122 – Validating a Dependency Property
  • #123 – Coercing a Dependency Property
  • #124 – One Example of WPF’s Use of Dependency Property Callbacks
  • #125 – Responding to Changes in Dependency Properties for WPF Objects
  • #127 – Reacting to a Dependency Property Change Using Triggers
  • #129 – Properties Changed by Triggers Are Automatically Reset
  • #130 – WPF Supports Three Types of Triggers
  • #131 – Dependency Properties Inherit Values from Higher Up in the Logical Tree
  • #132 – Inherited Property Values Pass Through All Elements
  • #168 – A More Complete Class Hierarchy
  • #169 – The Base Element Classes
  • #170 – Functionality That The Base Element Classes Provide
  • #171 – Other Base Classes – Freezable and Animatable
  • #173 – You Can Put Freezable Objects Into a Read-Only State
  • #175 – Freeze Graphical Objects That You Don’t Intend to Modify
  • #176 – Two Kinds of Templates
  • #197 – Override Application Class Methods for Standard Events
  • #198 – Creating and Showing Additional Windows
  • #199 – An Application’s Windows Property Lists All of Its Windows
  • #200 – Parent/Child Relationships Between Windows
  • #201 – Showing a Modal Dialog Using ShowDialog
  • #202 – An Example of Modal/Modeless Dialogs
  • #203 – Window Size and Location Are Specified in Device Independent Units
  • #204 – Detecting Key Presses in a WPF Window
  • #205 – The WPF GUI Pipeline
  • #206 – WPF Applications Use an Event-Driven Paradigm
  • #610 – Application Event Sequence
  • #611 – Set Application Exit Code in Exit Event Handler
  • #612 – Application Event Sequence for Page-Based Applications
  • #759 – Device-Independent Units (DIPs)
  • #1,098 – OnLastWindowClose Shutdown Mode
  • #1,099 – OnMainWindowClose Shutdown Mode
  • #1,100 – OnExplicitShutdown Shutdown Mode
  • #1,101 – Defining a Handler for Unhandled Exceptions
  • #1,102 – Shutting Application Down after Handling Unhandled Exception
  • #1,105 – Using Application’s Windows Collection to Interact with Other Windows

Blend

  • #185 – Creating a WPF Application Using Blend
  • #186 – When to Use Blend (vs. Visual Studio)
  • #188 – Adding Controls to a Window Using Blend
  • #190 – Adding an Event Handler to a Control Using Blend
  • #192 – Setting a Control’s Properties Using Blend
  • #193 – You Can Have a Project Open in Blend and Visual Studio at the Same Time
  • #194 – Hello WPF World, Love Blend
  • #287 – Adding Controls to a Window in Blend by Editing XAML
  • #289 – Editing WPF Code-Behind in Blend
  • #295 – Blend Provides Intellisense
  • #414 – Creating a Grid in Expression Blend
  • #427 – Changing Margins from Within Blend
  • #428 – Setting Other Layout Properties from Within Blend
  • #433 – Preservation of Margins While Editing Grid in Blend
  • #434 – Canvas Layout Mode in Blend
  • #511 – Blend Basics – The Tools Panel
  • #512 – Areas of the Screen in Blend
  • #513 – Using the Selection Tool in Blend
  • #514 – Different Ways to Select Objects in Blend
  • #515 – Zooming In and Out on the Artboard
  • #516 – Drawing a Path in Blend with the Pen Tool
  • #517 – XAML Output when Drawing with the Pen Tool
  • #518 – Change Points in a Path Using the Direct Selection Tool
  • #519 – Adding Points to an Existing Path
  • #520 – Drawing a Path with the Pencil Tool
  • #521 – Pen and Pencil Tools Both Generate Path Elements
  • #522 – Keyboard Shortcuts in Blend
  • #523 – Panning the Artboard in Blend
  • #524 – Using the Zoom Tool to Zoom on the Artboard
  • #525 – Use the Eyedropper Tool to Copy Colors
  • #527 – Colorful Expression Add-in Connects to Adobe Kuler
  • #528 – Using the Eyedropper Tool in the Color Editor
  • #529 – Using the the Paint Bucket Tool to Copy Attributes
  • #530 – Creating a Linear Gradient in Blend
  • #531 – Adjusting a Gradient Using the Gradient Tool
  • #532 – Using the Gradient Tool to Move Gradient Stops
  • #533 – Using the Gradient Tool to Modify a Radial Gradient
  • #534 – Drawing Shapes with the Shape Tools in Blend
  • #535 – Drawing Symmetrical Shapes in Blend
  • #536 – Adding Layout Panels Using the Tools Panel in Blend
  • #537 – Changing a Layout Panel to a Different Type
  • #538 – XAML End Tags Are Automatically Added as Needed in Blend
  • #539 – Adding Text-Based Elements in Blend
  • #540 – Adding Common Controls in Blend
  • #541 – Adding Elements from The Assets Panel in Blend
  • #542 – Most Recently Used Asset
  • #543 – Searching for Controls in the Assets Panel
  • #544 – Objects and Timeline Panel Shows the Logical Tree
  • #545 – Locking Objects to Prevent Changes
  • #546 – Adding Gradient Stops in Blend
  • #547 – Specifying Colors by Name in Blend
  • #548 – Change the Offset of a Gradient Stop in Blend
  • #549 – More Colors Than You Know What to Do With
  • #550 – Converting a Brush into a Resource in Blend
  • #551 – Resources Are Listed under the Resources Tab in Blend
  • #552 – Setting a Property to Use an Existing Resource
  • #553 – Setting an Alpha Value in Blend
  • #554 – Using an Opacity Mask
  • #555 – Creating a Radial Opacity Mask
  • #558 – Reversing a Gradient Using Blend
  • #559 – Drawing a Masked Gradient in Blend
  • #565 – Workaround for Inability to Scroll ScrollViewer in Design Mode in Blend
  • #566 – Setting Properties of an Effect in Blend
  • #567 – Setting Layout Related Properties in Blend
  • #568 – Setting Text-Related Properties in Blend
  • #569 – Setting Transforms from within Blend
  • #570 – Use Blend to Search for Properties
  • #571 – Moving Windows Around in Blend
  • #572 – You Can Move Windows Outside of the Blend GUI
  • #573 – Workspaces in Blend

Brushes

  • #556 – Clipping to a Border Using an Opacity Mask
  • #557 – Using an Image As an Opacity Mask
  • #560 – Using a Radial Gradient to Create a 3D Effect

Commands

  • #342 – Binding a Button to a Command
  • #343 – Associating Multiple Controls with the Same Command
  • #344 – The CommandBinding CanExecute Event Determines Whether a Button is Enabled
  • #345 – WPF Command Model is Preferred over Traditional Event Handler Model
  • #346 – No Need to Set Header Property for MenuItem When Using Commands
  • #347 – How to Set Content Property for Button Based on Command
  • #348 – Predefined Command Objects, Part I
  • #349 – Predefined Command Objects, Part II
  • #1,078 – Defining a Command Binding Using Lambda Expressions
  • #1,079 – Executing a Command Programmatically
  • #1,080 – Command Text for Preexisting Commands Is Automatically Localized
  • #1,081 – Adding CommandBinding to Top-Level CommandBindings
  • #1,082 – Adding CommandBindings to Individual UI Elements
  • #1,083 – Setting CommandBindings in XAML
  • #1,084 – A KeyBinding Binds a Command to a Key
  • #1,085 – Input Bindings Don’t Require that Element Binds to Command
  • #1,086 – Defining a Key Binding in XAML
  • #1,087 – Associating a Key Binding with Multiple Modifier Keys
  • #1,091 – Using a CommandTarget to Change the Source of a Routed Command
  • #1,092 – An Example of Using a CommandTarget
  • #1,093 – Intercepting a Command Before It Executes
  • #1,095 – Creating and Using a Custom Command
  • #1,096 – The RoutedUICommand Adds a Text Property
  • #1,097 – Getting Items in Context Menu to Correctly Use Command Binding
  • #1,199 – Complete WPF Command Example

Controls

  • #21 – WPF Control Sampler
  • #22 – Layout Controls
  • #27 – Class Hierarchy
  • #28 – DispatcherObject
  • #34 – ContentControl
  • #35 – ItemsControl
  • #177 – A Content Presenter Is a Placeholder for a Content Control’s Content
  • #178 – A Control Can Have Both a Control Template and A Data Template
  • #179 – Panel Controls Contain UIElement Children
  • #207 – Setting a Control’s Background Color
  • #209 – Specifying a Color Where a Brush Is Expected in XAML
  • #243 – Display Text Using a Label Control
  • #244 – Use a TextBlock Element for Richer Formatting
  • #245 – Easily Inline Text Formatting Codes with TextBlock Control
  • #246 – Use FlowDocument Control to Host Entire Documents
  • #247 – Types of Blocks that You Can Use in a FlowDocument
  • #248 – Creating a List in a FlowDocument
  • #249 – Creating a Table in a FlowDocument
  • #250 – Including a Section Block in a FlowDocument
  • #251 – Embedding an UIElement Within a FlowDocument
  • #252 – FlowDocument Flows its Content Automatically
  • #253 – FlowDocument is Hosted in a FlowDocumentReader Automatically
  • #254 – Types of Containers for Hosting a FlowDocument
  • #255 – Flow Text Around an Image in a FlowDocument
  • #256 – Use a FixedDocument to Display Content at Fixed Locations
  • #257 – TextBox Control Allows Basic Text Entry and Editing
  • #258 – RichTextBox Allows Richer Formatting than TextBox
  • #259 – Setting Typography Properties for Text Rendered with an OpenType Font
  • #267 – Think Twice Before You Subclass a Control
  • #269 – Automatically Sizing a Window to Fit Its Contents
  • #270 – Minimum and Maximum Window Size
  • #271 – Changing a Window’s Resize Behavior
  • #272 – Displaying a Border Around a Window
  • #273 – Display a Picture Using an Image Control
  • #274 – Embed Images into Your Project as Binary Resources
  • #275 – Load a Loose Image File into an Image Control
  • #276 – Change Image Sizing Using the Stretch Property
  • #277 – Images May Have Embedded DpiX and DpiY Information
  • #278 – Allow an Image to Get Bigger, But Not Smaller (or Vice Versa)
  • #279 – Adding a Border Around an Image Control
  • #280 – Alignment Properties for an Image
  • #281 – Give an Image Control More Room with a Margin
  • #282 – The Margin Property Stores a Thickness Value
  • #283 – A Window Can Have Only a Single Child Element
  • #284 – Making an Image Translucent Using the Opacity Property
  • #285 – Rotating an Image
  • #286 – Adding Controls to a Window in Visual Studio by Editing XAML
  • #296 – Controls that Derive from the Control Class
  • #297 – Create a Mirror Image of a Control or Image
  • #298 – Button Basics – Content and Click
  • #299 – Controls Do Not Need a Name
  • #300 – Button is a ContentControl
  • #301 – Using Access Keys
  • #302 – Access Keys for Controls that Don’t Have a Caption
  • #303 – Define an Access Key for a Control Using an Underline
  • #304 – Defining an Access Key That Gives Focus to a Different Control
  • #305 – Guidelines for Defining Access Keys
  • #306 – Keyboard Focus
  • #307 – Giving Focus to a Control When an Application Starts
  • #308 – Checking to See Which Control Has Keyboard Focus
  • #309 – Keyboard Focus vs. Logical Focus
  • #310 – Give a Control Logical Focus
  • #311 – Giving Focus to a Control, Part II
  • #312 – Specify a Default Button in a Window
  • #313 – Specify a Cancel Button in a Window
  • #314 – Typical Usage for Default and Cancel Buttons
  • #315 – Setting IsDefault and IsCancel to the Same Button
  • #316 – Changing the ClickMode of a Button
  • #317 – Label Basics
  • #318 – TextBox Basics
  • #328 – Controls that Make Use of the Padding Property
  • #338 – Setting a Control’s Foreground Color
  • #339 – Wrapping a Button’s Text Content to Multiple Lines
  • #340 – Create a Button with an Image
  • #341 – Create a Button with an Image and Text
  • #350 – CheckBox Basics
  • #351 – Binding a CheckBox’s IsChecked Property to a Boolean Variable
  • #352 – Use IsThreeState Property to Create a CheckBox that Has an Indeterminate State
  • #353 – Binding a Three-State CheckBox to a Nullable Bool
  • #354 – Use Three-State CheckBox to Show State of Other CheckBoxes
  • #355 – Implementing Three-State CheckBox Dependent Behavior
  • #356 – RadioButton Basics
  • #357 – RadioButton is a ContentControl
  • #358 – Binding a RadioButton to an Enumerated Type
  • #359 – ToggleButton Basics
  • #360 – Binding a ToggleButton’s IsChecked Property to a Boolean Variable
  • #361 – Creating a ToggleButton Whose Content Is an Image
  • #362 – Changing the Text on a ToggleButton When a User Clicks On It
  • #363 – Calendar Control Basics
  • #364 – Allowing a User to Select Multiple Dates in a Calendar Control
  • #365 – SelectedDate and SelectedDates Properties of Calendar Control
  • #366 – Binding a Calendar Control’s SelectedDate Property to a Nullable DateTime
  • #367 – You Can’t Bind to a Calendar Control’s SelectedDates Property
  • #368 – Specifying Blackout Dates in a Calendar Control
  • #371 – Specifying a Default Date for a Calendar Control to Display
  • #372 – Defining Tooltips for GUI Elements
  • #373 – Creating More Complex Tooltips
  • #374 – Using a Tooltip to Display the Full Contents of a TextBox
  • #375 – Binding Something in a Tooltip to a Property on the Parent Control
  • #376 – Getting Text to Wrap in a Tooltip
  • #377 – Reuse Tooltips by Defining Them as Resources
  • #378 – Positioning Tooltips
  • #379 – Using a Tooltip As a Magnifier
  • #380 – The Frame Control Can Host Web Content
  • #381 – Loading .rtf Files Into a RichTextBox
  • #382 – Persisting RichTextBox Contents as XAML
  • #406 – Creating New Controls by Layering One on Top of Another
  • #435 – Use Border Element to Draw Border Around Elements
  • #436 – Using a Drop Shadow with a Border
  • #437 – Showing Rounded Corners on a Border
  • #438 – Border Element Can Have a Background
  • #439 – Using a DropShadow with a Border, part II
  • #474 – Hiding a ComboBox Selection Highlight When the Mouse Moves off Item
  • #481 – You Can Draw On an InkCanvas Control with the Mouse
  • #482 – You Can Include Other Controls Inside an InkCanvas
  • #483 – InkCanvas MinHeight and MinWidth
  • #484 – InkCanvas Contains a Collection of Strokes
  • #486 – InkCanvas Supports Different Editing Modes
  • #487 – Specify DrawingAttributes When Drawing to an InkCanvas
  • #488 – You Can Change Drawing Attributes of Existing Strokes in an InkCanvas
  • #489 – Using the InkCanvas to Recognize Gestures, part I
  • #490 – Using the InkCanvas to Recognize Gestures, part II
  • #491 – Displaying a Hyperlink
  • #493 – Setting the Visibility of a User Interface Element
  • #499 – Interacting with the Control That Initiated an Event
  • #504 – GroupBox Basics
  • #505 – The Header of a GroupBox Can Be Anything
  • #506 – Using a ComboBox as GroupBox Header
  • #507 – Expander Control Lets you Expand/Collapse a Set of Controls
  • #508 – Displaying a Spinning Busy Indicator
  • #509 – Displaying a Busy Indicator in a Data Template
  • #510 – The Header of an Expander Can Be Anything
  • #577 – You Can Change DockPanel.Dock Property at Runtime
  • #623 – Focusable Property Indicates Whether a Control Can Receive Focus
  • #634 – Modifying Text in the TextChanged Event
  • #639 – Default Tab Order Is Sensible
  • #640 – Set the TabIndex Property to Change Tab Order
  • #641 – The Difference Between IsTabStop and Focusable
  • #642 – Focusable and IsTabStop in Combination
  • #643 – Disabled Controls Cannot Get Focus
  • #644 – Disabling and Hiding Controls
  • #663 – How IsMouseOver Works for Nested Elements
  • #715 – Using the Thumb Control to Drag Objects on a Canvas
  • #716 – Using a Border As a Visual Indication That a Control Can Be Dragged
  • #725 – Make Use of the Extended WPF Toolkit
  • #726 – Sample Controls from the Extended WPF Toolkit
  • #809 – You Can Use a Brush for a Control’s Background
  • #810 – Setting Foreground and Background Properties from Code
  • #811 – Setting Color Values in Code Based on System Colors
  • #812 – Use TextDecorations Property to Underline or Strike Through Text
  • #813 – Applying TextDecorations in the Middle of a Block of Text
  • #828 – ListView and GridView Data Binding Example
  • #833 – CheckBox is a ContentControl
  • #834 – Displaying Custom Content on a TabControl’s Tabs
  • #835 – Displaying Custom Content in a GroupBox Header
  • #836 – Setting a ContentControl’s Content to a CLR Object
  • #837 – A Window Cannot Be a Child of a ContentControl
  • #838 – Using a Label’s Access Key to Give Focus to Another Control
  • #839 – A Label’s Target Could Have Its Own Label
  • #840 – Access Keys Should Be Unique within A Window
  • #841 – Display Underlines for Access Keys at All Times
  • #842 – The Differences Between Label and TextBlock
  • #843 – Text Justification in a TextBlock
  • #844 – The TextBlock Supports Hyphenation
  • #845 – Display Ellipsis in TextBlock to Indicate that Content Doesn’t Fit
  • #846 – Including an Underscore Character in a Label
  • #847 – Default Button Behavior Depends on Focus
  • #848 – IsDefaulted vs. IsDefault for a Button
  • #849 – You Can Hold a RepeatButton Down
  • #850 – Specifying a Delay and Interval for a RepeatButton
  • #851 – Using RepeatButtons to Move Something
  • #852 – Setting a Three-State CheckBox to an Indeterminate Value
  • #853 – A CheckBox Can Always Be in an Indeterminate State
  • #854 – Clicked vs. Checked/Unchecked Events for CheckBox
  • #855 – RadioButtons Are Grouped Based on their Container
  • #856 – Placing RadioButtons in a GroupBox
  • #857 – Manually Grouping RadioButtons
  • #858 – How to Set Properties for a Tooltip
  • #859 – Changing the Amount of Time That a ToolTip Is Shown For
  • #860 – Making a Tooltip Partially Transparent
  • #861 – Tooltip Delays and Timing
  • #862 – Changing Default Tooltip Delay for all Applications
  • #863 – Tooltips Are Normally Not Shown when a Control Is Disabled
  • #864 – Changing the Look of a ToolTip with a Control Template
  • #865 – ToolTip Can Extend Beyond Window Boundaries
  • #866 – Displaying a Popup Window
  • #867 – Controlling Whether a Popup Is Open Using Data Binding
  • #868 – A Popup Stays Open By Default
  • #869 – Don’t Leave a Popup Window Open
  • #870 – Popup Is a ContentControl
  • #871 – Popup Control Automatically Sizes to Fit Its Content
  • #872 – Animating a Popup
  • #873 – Using a Popup Rather than a Tooltip
  • #874 – Setting the Background for a Popup
  • #875 – Popup Control Doesn’t Require a Border
  • #876 – Default Popup Placement
  • #877 – Placing a Popup Relative to Another Control
  • #878 – Options for Positioning a Popup Relative to Another Control
  • #879 – Positioning a Popup Relative to the Mouse
  • #880 – Adding an Offset When Positioning a Popup
  • #881 – Positioning a Popup Relative to an Arbitrary Rectangle
  • #882 – Popup Placement at Screen Boundaries
  • #883 – ScrollViewer Is a ContentControl
  • #884 – Making a StackPanel Scroll More Intelligently
  • #885 – Wrapping a Grid in a ScrollViewer
  • #886 – Wrapping a Canvas in a ScrollViewer
  • #887 – The Difference between Disabled and Hidden Scrollbar Visibility
  • #888 – Different Ways to Scroll Content in a ScrollViewer
  • #889 – Scrolling a ScrollViewer from Code
  • #890 – Bringing a Control into View within a ScrollViewer
  • #891 – Changing the Border of a GroupBox
  • #892 – Changing the Font for Everything within a GroupBox
  • #893 – Creating a GroupBox with a Border But No Header
  • #894 – Creating a GroupBox with a Header But No Border
  • #895 – Adding a Watermark to a GroupBox
  • #896 – A TabControl Groups Content into a Series of Pages
  • #897 – Content on a TabItem Does Not Automatically Wrap
  • #898 – Setting the Text that Appears on a TabItem
  • #899 – Displaying Multiple Controls on a TabControl’s Tabs
  • #900 – Changing the Font Used in a TabControl
  • #901 – Scrolling Content within a TabControl
  • #902 – The TabControl Automatically Creates Multiple Rows of Tabs
  • #903 – Placing Tabs on Different Sides of a TabControl
  • #904 – Placing RadioButtons in a TabControl
  • #905 – Executing Some Code when a User Changes Tabs on a TabControl
  • #906 – Programmatically Changing the Current Tab on a TabControl
  • #907 – Binding a TabControl to a List of Objects, part I
  • #908 – Binding a TabControl to a List of Objects, part II
  • #909 – Binding a TabControl to a List of Objects, part III
  • #910 – Using Data Binding to Control the Currently Selected Tab of a TabControl
  • #911 – Use ItemTemplate to Control Content on Tabs
  • #912 – Expanding an Expander Will Trigger Layout
  • #913 – Changing the Direction that an Expander Expands
  • #914 – Drawing a Border Around an Expander
  • #915 – Delaying Generation of Expander Content
  • #916 – Scrolling Content within an Expander Control
  • #917 – Changing Something when an Expander Is Expanded
  • #918 – Limiting How Much Text a User Can Enter into a TextBox
  • #919 – Changing the Border of a TextBox
  • #920 – TextBox Sizes to Fit Its Content
  • #921 – Keyboard Shortcuts Available in a TextBox Control
  • #922 – Mouse Shortcuts Available in a TextBox Control
  • #923 – Text Wrapping in a TextBox
  • #924 – TextBox Wrap vs. WrapWithOverflow
  • #925 – Scrolling Through TextBox Text That Doesn’t Wrap
  • #926 – Text Containing Embedded Carriage Returns Wraps Automatically
  • #927 – Limiting the Size of a TextBox
  • #928 – TextBox.MinLines Doesn’t Size Properly on Startup
  • #929 – Allowing Multiline Input in a TextBox
  • #930 – LineCount Property Indicates Number of Lines in TextBox
  • #931 – Scrolling Text in a TextBox from Code
  • #932 – Making a TextBox Read-Only or Disabled
  • #933 – Cut/Copy/Paste Functionality in a TextBox
  • #934 – TextBox Has Built-In Undo Functionality
  • #935 – Setting an Undo Limit for a TextBox
  • #936 – TextBox Properties that Reflect Currently Selected Text
  • #937 – Selecting Text in a TextBox from Code
  • #938 – Changing the Selected Text Color in a TextBox
  • #939 – Retrieving Individual Lines of Text from a TextBox
  • #940 – Easy Selection of Entire Words in a TextBox
  • #941 – Forcing Uppercase or Lowercase in a TextBox
  • #942 – Text Justification in a TextBox
  • #943 – Turning on Spell Checking within a TextBox
  • #944 – Entering Special Characters into a TextBox
  • #945 – A Strategy for Limiting Allowed Text in a TextBox
  • #947 – Intercepting Paste Operations in a TextBox
  • #948 – Complete Example of Limiting TextBox Input
  • #949 – Add a Custom Dictionary for Spell Checking in a TextBox
  • #950 – PasswordBox Allows Entering a Password
  • #957 – A Survey of Some List-Based Controls
  • #958 – Three Ways to Populate a List Control
  • #959 – ListBox Basics
  • #960 – A ListBox Can Store Objects of Different Types
  • #961 – A ListBox Has Three Available Selection Modes
  • #969 – Items Property of ListBox Contains List of Items
  • #970 – Avoid Working Directly with Items Collection
  • #971 – Items Property is a Content Property
  • #972 – How ListBox Items Are Rendered
  • #973 – Keyboard Shortcuts for a ListBox
  • #974 – Properties for Retrieving Selected Items in a ListBox
  • #975 – SelectedValue and SelectedValuePath for a ListBox
  • #976 – SelectedItem Binding on an ItemsControl is Two-Way
  • #977 – DisplayMemberPath Indicates Property to Use for Displaying Bound Items
  • #978 – Discovering Whether an Item in a ListBox Is Selected
  • #979 – Selecting Items in a ListBox Programmatically
  • #980 – Binding ListBox Selection to Property on Bound Object
  • #981 – Including a CheckBox with Each Item in a ListBox
  • #982 – Executing Code When Selected Items in a ListBox Change
  • #983 – Using a CollectionViewSource to Sort Items in a ListBox
  • #984 – Grouping Items in a ListBox with a CollectionViewSource
  • #985 – Displaying Expandable Groups within a ListBox
  • #986 – Filtering a ListBox Using a CollectionViewSource
  • #987 – CollectionViewSource Updates on Refresh or Change to Collection
  • #988 – Enabling Live Sorting in a CollectionViewSource
  • #989 – Enabling Live Filtering in a CollectionViewSource
  • #990 – Typing Text to Select an Item in a ListBox
  • #991 – Specifying which Field Is Used for Finding an Item by Typing
  • #992 – Scrolling an Item in a ListBox into View
  • #993 – Default Control Template for a ListBox
  • #995 – ListBox Uses UI Virtualization by Default
  • #996 – Turning off UI Virtualization in a ListBox
  • #998 – Orient a ListBox Horizontally
  • #999 – Using a Canvas as the Items Panel for a ListBox
  • #1,000 – Displaying the Contents of a ListBox in a Circle
  • #1,001 – Setting an Alternating Background Color in an ItemsControl
  • #1,002 – Using Larger Values for AlternationCount in an ItemsControl
  • #1,003 – Set CanContentScroll to False for Smooth Scrolling in a ListBox
  • #1,004 – Setting CanContentScroll Disables Virtualization
  • #1,005 – Enabling Deferred Scrolling for Better Performance
  • #1,006 – Scrollbars in a ListBox Appear as Needed
  • #1,007 – Changing Scrollbar Settings for a ListBox
  • #1,008 – ComboBox Basics
  • #1,009 – ComboBox Data Binding Basics, Part I
  • #1,010 – ComboBox Data Binding Basics, Part II
  • #1,011 – ComboBox Data Binding Basics, Part III
  • #1,012 – Using a Different Data Template for the Face of a ComboBox
  • #1,013 – Typing Text to Select an Item in a ComboBox
  • #1,014 – Typing Text to Select an Item in a ComboBox, Part II
  • #1,015 – Typing Text to Select an Item in a ComboBox, Part III
  • #1,016 – Displaying a Collection of Items in a WrapPanel
  • #1,017 – Scaling Items in a List Using a Slider
  • #1,018 – Slider Basics
  • #1,019 – Constraining a Slider to Integer Values
  • #1,020 – Displaying Tick Marks on a Slider
  • #1,021 – Two Ways to Position Tick Marks on a Slider
  • #1,022 – Render Tick Marks in a Different Color
  • #1,023 – Displaying a Tooltip that Shows the Value of a Slider
  • #1,024 – Making a Slider Cycle through Values of an Enumerated Type
  • #1,025 – Small and Large Changes to the Value of a Slider
  • #1,026 – Horizontal and Vertical Sliders
  • #1,027 – Displaying a Subrange on a Slider
  • #1,028 – ProgressBar Basics
  • #1,029 – Simple ProgressBar Example
  • #1,030 – Displaying an Indeterminate Progress Bar
  • #1,031 – Update a ProgressBar from a Background Thread
  • #1,033 – ProgressBar Can Be Horizontal or Vertical
  • #1,034 – Limiting the Range of Selectable Dates in a Calendar
  • #1,035 – DatePicker Basics
  • #1,036 – Date Formats in the DatePicker Control
  • #1,037 – Entering Text Manually into a DatePicker
  • #1,038 – Another Way to Prevent Certain Dates from Being Selected
  • #1,039 – Intercepting Bad Date Strings Entered into a DatePicker
  • #1,043 – Using a DockPanel as the Items Panel for a ListBox
  • #1,088 – Removing Key Bindings
  • #1,089 – Adding a Parameter to a Command
  • #1,090 – Sender vs. Source in CommandBinding Event Handlers
  • #1,094 – Disabling Editing Operations in a TextBox
  • #1,135 – Alternatives to Creating a Custom Control
  • #1,136 – WPF Controls Are Lookless
  • #1,141 – Attached Properties Allow Customization of Existing Controls
  • #1,142 – Setting Attached Property Value from Code
  • #1,143 – Coordinate System for StreamGeometry
  • #1,144 – Geometry in Custom Shape Doesn’t Automatically Scale
  • #1,145 – Using RenderSize in Custom Shape
  • #1,163 – Make an Image Clickable with a Control Template
  • #1,177 – UIElement vs. FrameworkElement vs. Control
  • #1,178 – Custom Element Based on FrameworkElement
  • #1,179 – Alignment and Margin Properties for a Custom FrameworkElement
  • #1,180 – By Default, FrameworkElement Doesn’t Have Desired Size
  • #1,181 – Custom Element Indicates Desired Size in MeasureOverride
  • #1,182 – Using RenderSize Properties in Custom Elements
  • #1,183 – Where Data Templates Are Used
  • #1,184 – Where Data Templates Are Used, part II
  • #1,185 – ItemsControl Customization Summary
  • #1,186 – Default ItemContainerStyle for a ListBox
  • #1,187 – Using an ItemContainerStyle to Change Items in an ItemsControl
  • #1,188 – Using an ItemContainerStyle to Animate Items in an ItemsControl
  • #1,189 – MeasureOverride Input and Output
  • #1,190 – VisualChildrenCount and GetVisualChild
  • #1,191 – Custom Element with a Single Child Element
  • #1,192 – Calling Arrange on Child Elements
  • #1,193 – MeasureOverride and Margins
  • #1,194 – DesiredSize of Child Elements Includes Margins
  • #1,198 – Selectively Enabling Child Elements in a Disabled Panel

Data Binding

  • #25 – Data Binding Overview
  • #126 – Reacting to a Dependency Property Change Using Binding
  • #369 – Binding a Label’s Content to the Current Date and Time
  • #370 – Binding a Label’s Content to the Current Date and Time, part II
  • #395 – Rich ListBox Content using Data Binding, part I
  • #396 – Rich ListBox Content Using Data Binding, part II
  • #397 – Rich ListBox Content Using Data Binding, part III
  • #485 – Binding a ComboBox to an Enumerated Type’s List of Values
  • #494 – Using a Value Converter to Bind to a Visibility Property
  • #495 – Binding to a Visibility Property Without Using a Value Converter
  • #635 – Using a Value Converter to Change User Input
  • #825 – Two Way Binding for a CheckBox
  • #964 – ListBox Data Binding Basics, Part I
  • #965 – ListBox Data Binding Basics, part II
  • #966 – ListBox Data Binding Basics, part III
  • #967 – ListBox Data Binding Basics, part IV
  • #968 – ListBox Data Binding Basics, part V
  • #1,137 – Value Converter Basics
  • #1,138 – Value Converter Example for Output
  • #1,139 – Value Converter Example for Input
  • #1,140 – Using a Value Converter in a Template

Dependency Properties

  • #29 – Dependency Properties
  • #133 – Where a Dependency Property Gets Its Value
  • #134 – Dependency Property Value Sources: #1 – Local Value
  • #135 – Dependency Property Value Sources: #2 – Parent Template Trigger
  • #136 – Dependency Property Value Sources: #3 – Parent Template
  • #137 – The Value of the Style Property Comes from One of Three Places
  • #138 – Dependency Property Value Sources: #4 – Implicit Style
  • #139 – Dependency Property Value Sources: #5 – Style Triggers
  • #140 – Dependency Property Value Sources: #6 – Template Triggers
  • #141 – Dependency Property Value Sources: #7 – Style Setters
  • #142 – Dependency Property Value Sources: #8 – Theme Style Triggers
  • #143 – Dependency Property Value Sources: #9 – Theme Style
  • #144 – Dependency Property Value Sources: #10 – Inheritance
  • #145 – Dependency Property Value Sources: #11 – Default Value
  • #146 – Use GetValueSource Method to Find the Source of a Dependency Property Value
  • #147 – Use SetCurrentValue When You Want to Set A Dependency Property Value from Within a Control
  • #148 – Property Values Set Using Expressions Overwrite the Base Value
  • #149 – Use PropertyChanged and Coercion Callbacks to Force Dependencies Between Properties
  • #150 – An Example of Using PropertyChanged and CoerceValue Callbacks
  • #151 – Dependency Properties Remember Non-Coerced Values
  • #152 – Use ReadLocalValue() to Find the Local Value of a Dependency Property
  • #153 – You Can Set the Value of any Dependency Property for any Dependency Object
  • #154 – Reusing an Existing Dependency Property in Your Class
  • #155 – Implementing an Attached Dependency Property
  • #156 – Using the Tag Property to Store Custom Data with an Element
  • #157 – You Can Set Standard CLR Properties from XAML
  • #158 – When to Create a Custom Dependency Property
  • #159 – Creating a Read-Only Dependency Property
  • #160 – Be Careful When Setting Dependency Property Values from a DependencyObject Constructor
  • #161 – Read a Dependency Property’s Metadata
  • #162 – UIPropertyMetadata and FrameworkPropertyMetadata
  • #163 – Constructing FrameworkPropertyMetadata
  • #164 – Overriding Metadata for an Inherited Dependency Property
  • #165 – Overriding Metadata Can Result in Merged Metadata
  • #166 – You Can Override Metadata for Any Dependency Property
  • #167 – Implementing a Dependency Property That Is A Collection
  • #574 – Complete Example of Implementing a Dependency Property
  • #575 – PropertyMetadata vs. FrameworkPropertyMetadata
  • #1,040 – An Example of Dependency Property Inheritance

Events

  • #500 – Sharing an Event Handler Across Multiple Controls, Method I
  • #501 – Sharing an Event Handler Across Multiple Controls, Method II
  • #502 – Sender vs. RoutedEventArgs.Source
  • #503 – Be Careful When Casting RoutedEventArgs.Source
  • #576 – How (Traditional CLR) Events Work
  • #579 – Adding an Event Handler for a User Interface Element
  • #580 – Events in WPF are Routed
  • #581 – An Example of a Routed Event
  • #582 – Events Are Routed Even When a Handler is Not Defined
  • #583 – Interrupting the Routing Process
  • #584 – Handling an Event That Has Already Been Handled
  • #585 – Tunneling Events Propagate Down the Logical Tree
  • #586 – Bubbling and Tunneling Events Are Typically Paired
  • #587 – The Purpose of Tunneling and Bubbling Events
  • #588 – If You Handle PreviewKeyDown Event, KeyDown Won’t Fire
  • #589 – Standard Tunneling/Bubbling Event Pairs
  • #590 – Not All Routed Events Exist in Pairs
  • #591 – You Can Attach Any Routed Event to Any Control
  • #592 – Adding an Event Handler in Code
  • #593 – AddHandler Method Can Add Handler for Any Event
  • #594 – Routed Events Under the Covers
  • #595 – Syntax Choices for Defining an Event Handler
  • #596 – Using Lamba Expressions When Declaring Event Handlers
  • #597 – Naming Conventions for Event Handlers
  • #598 – Three Flavors of Routed Events
  • #599 – A Complete Example of a Routed Event
  • #600 – Registering a Routed Event
  • #601 – The RoutedEventHandler Delegate Type
  • #602 – Accessing Information in RoutedEventArgs
  • #603 – Sender, Source and OriginalSource Example
  • #604 – Defining a New Routed Event
  • #605 – Using Subclasses of RoutedEventArgs
  • #606 – Reusing an Existing Routed Event in Your Class
  • #607 – An Instance Handler vs. A Class Handler
  • #608 – Class Handlers Are Invoked Before Instance Handlers
  • #609 – Perform Initialization in Window.Loaded Handler
  • #615 – Standard Object Lifetime Events for FrameworkElement Objects
  • #616 – FrameworkElement.Initialized and Loaded Event Order
  • #617 – Input Events
  • #618 – Keyboard Event Summary
  • #619 – Event Sequence for the Key Up/Down Events
  • #620 – Why Are There So Many KeyPress Events?
  • #621 – An Example of Handling Preview Keypress Events
  • #622 – The Source of a Keyboard Event
  • #624 – Information Available to Key Up/Down Events
  • #625 – Converting a Keypress Timestamp to a DateTime
  • #626 – Key Up/Down Sequence When Using CTRL Key
  • #627 – Detecting Whether The Ctrl Key Is Pressed In a KeyDown Event Handler
  • #628 – Key Up/Down Sequence When Using ALT Key
  • #629 – Some Controls May Swallow Keypress Events
  • #628 – Key Up/Down Sequence When Using ALT Key
  • #629 – Some Controls May Swallow Keypress Events
  • #630 – PreviewTextInput and TextInput Events
  • #631 – Event Sequence for KeyPressUp, KeyPressDown and TextInput
  • #632 – Block Input Using PreviewTextInput
  • #633 – TextChanged Event Fires After TextBox Text Has Changed
  • #636 – Keyboard Events that Fire When A Key Is Held Down
  • #637 – Block Repeating Keys by Setting Handled to true
  • #638 – PreviewTextInput Is Not Fired In Many Cases
  • #645 – Checking for the Presence of Modifier Keys
  • #646 – Detecting a Key’s Toggle State in a Keypress Handler
  • #647 – You Can Treat Any Key As A Toggle Key
  • #648 – Check the Toggled State of Any Key
  • #649 – KeyStates Property Combines IsDown and IsToggled
  • #650 – Getting Information About Keyboard Keys from Any Method
  • #651 – Using Static Members of the Keyboard Class
  • #652 – Mouse Event Summary
  • #653 – MouseMove Events
  • #654 – Mouse Events for Button Presses
  • #655 – Bubbling Mouse Events Swallowed by Some Controls
  • #656 – Data Available to Mouse Button Event Handlers
  • #657 – Detecting Double Clicks in User Interface Elements
  • #658 – An Easier Way to Handle Mouse Double Clicks
  • #659 – Detecting a Triple Click
  • #661 – ButtonBase.Click Event vs. Mouse Click Events
  • #662 – IsMouseOver Property
  • #664 – MouseEnter and MouseLeave Events
  • #665 – Reacting to MouseEnter / MouseLeave Events
  • #666 – Using a Trigger to React to the Mouse Being Over a Control
  • #667 – IsMouseOver vs. IsMouseDirectlyOver
  • #668 – Retrieving the Mouse’s Current Position
  • #669 – Retrieving the Mouse’s Current Position in an Event Handler
  • #670 – Getting the Mouse Position Relative to a Specific Element
  • #671 – Mouse.GetPosition Only Works When Mouse Is in Window
  • #672 – Mouse Coordinates Are in Device Independent Units
  • #675 – Handling the PreviewMouseWheel and MouseWheel Events
  • #676 – MouseWheel Event Is Fired for Element That Mouse Pointer Is Over
  • #677 – Why the Standard Mouse Wheel Delta is 120
  • #678 – Hide an Element from the Mouse with IsHitTestVisible Property
  • #679 – Setting IsHitTestVisible to False Prevents Interaction with Controls
  • #680 – IsHitTestVisible Applies to All Child Elements
  • #681 – No Mouse Events When Visibility is Hidden, Collapsed or Hidden
  • #682 – Panel Elements Only Fire Mouse Events When Background Is Set
  • #683 – MouseUp Can Happen in Different Control from MouseDown
  • #684 – Mouse Events Occur for the Element That the Mouse Is Over
  • #685 – Capturing the Mouse
  • #687 – What Happens If You Forget to Release The Mouse
  • #689 – An Application Can Lose Its Mouse Capture
  • #690 – Being Notified When Mouse Capture Is Lost
  • #691 – IsMouseCaptured Indicates Whether Mouse Is Currently Captured
  • #692 – Common Controls Typically Do Not Capture the Mouse
  • #693 – TextBox Control Supports Drag-and-Drop
  • #694 – An Example of Custom Drag-and-Drop Behavior
  • #695 – Implementing Drag-and-Drop Behavior
  • #696 – A Drop Target Can Receive Data from Other Applications
  • #697 – Dragging Data Out of Your Application
  • #700 – Dragging an Image to Microsoft Word
  • #701 – Dragging an Image Between WPF Applications
  • #702 – Dragging an Image within a WPF Application
  • #703 – Indicating Formats that Are Allowed to be Dropped
  • #704 – Escape Key Cancels Drag-and-Drop Behavior
  • #705 – Dragging a Custom Object Using Serialization as Format
  • #706 – Dragging User Interface Elements Between Applications
  • #707 – Dragging a List of Items from a WPF Application into Excel
  • #708 – Dragging a File Into a WPF Application
  • #710 – DoDragDrop Is a Blocking Call
  • #711 – Changing the Mouse Cursor While Dragging
  • #712 – Showing a Custom Mouse Cursor While Dragging
  • #713 – Setting the Cursor to an Image of an UIElement While Dragging
  • #714 – Setting the Cursor to Render Some Text While Dragging
  • #717 – Drag-and-Drop with Touch on Windows 7
  • #729 – Mouse.GetPosition Doesn’t Work While Dragging
  • #730 – Use QueryContinueDrag Event to Know When Mouse Button State Changes
  • #731 – The Idea of Multi-Touch
  • #732 – Basic Events for Raw Touch Input
  • #733 – A Full List of Touch Related Events
  • #734 – Recognizing Different Fingers in Touch Event Handlers
  • #735 – System Applet Indicates Maximum Number of Touch Points
  • #736 – Finding the Maximum Number of Touch Points at Run-time
  • #737 – Touch Behavior when Maximum Number of Touch Points Reached
  • #738 – Sample Code – Drawing and Moving Circles at Touch Points
  • #739 – Handling Touch Input at Different Levels
  • #740 – Set Background of Canvas to Transparent to Receive Touch Events
  • #741 – Using Touch Manipulation Events to Translate an Element
  • #742 – Using Touch Manipulation Events to Rotate an Element
  • #743 – Using Touch Manipulation Events to Scale an Element
  • #744 – Keeping an Element within Window During Touch Manipulation
  • #745 – The Basics of Inertia
  • #746 – Specifying Inertial Deceleration
  • #747 – Implementing Inertia during Touch Manipulation
  • #748 – Getting the Size of a Contact Point during Raw Touch
  • #749 – Handling the TouchEnter and TouchLeave Events
  • #750 – Using Touch Manipulation to Translate in Just One Dimension
  • #751 – Indicating which Touch Manipulation Modes You Support
  • #752 – Tracking Total Scale when Scaling by Touch Manipulation
  • #753 – Scale vs. Expansion in ManipulationDelta Events
  • #754 – Implementing Inertia for Expansion during Touch Manipulation
  • #755 – Implementing Rotational Inertia during Touch Manipulation
  • #756 – Making Element Stop at Edge of Window When Using Inertia
  • #1,066 – Elements Must Be Visible and Enabled to Fire Events
  • #1,073 – Attached Events
  • #1,074 – Attached Event Syntax
  • #1,075 – Triggering on IsKeyboardFocusWithin Property

Fonts

  • #260 – The Concept of Fonts
  • #261 – Standard Fonts in Windows 7
  • #262 – Font Sample Sheets
  • #263 – Specifying Font Properties
  • #264 – Specifying Values for FontWeight
  • #265 – Specifying Values for FontStyle
  • #266 – Specifying Values for FontSize
  • #268 – Default FontFamily and FontSize
  • #334 – Specifying Values for FontFamily
  • #335 – How WPF Finds Fonts on a Target System
  • #336 – Intellisense Shows Fonts Available on Development System
  • #337 – Specifying Font Properties for All Controls In a Window
  • #814 – You Can Specify a List of Fonts to Try
  • #815 – Filling a ListBox with a List of All Fonts
  • #816 – Using a Font Dialog to Select Fonts
  • #817 – Embedding a Font into Your Application
  • #818 – Previewing Installed Fonts
  • #819 – Previewing TrueType Fonts in Windows Explorer
  • #820 – Viewing Additional Font Properties in Windows Explorer
  • #821 – Use TextFormattingMode to Make Text Look More Clear
  • #822 – Deciding which TextFormattingMode to Use

Graphics

  • #24 – Don’t Use Bitmaps in WPF Applications
  • #172 – Changes to a Brush Cascade to Consumers of the Brush
  • #174 – Predefined Brushes Are Already Frozen
  • #208 – Color Values Are Stored as RGB Values
  • #210 – Specifying Colors in XAML As RGB Values
  • #211 – Creating a Color Value in Code
  • #212 – Creating a Linear Gradient Brush
  • #213 – Changing the Gradient Line in a Linear Gradient Brush
  • #214 – Starting/Ending a Gradient Fill Inside a Control
  • #215 – Other Choices for Gradient Spreads Outside the Fill Area
  • #216 – Defining Several Different Gradient Stops in a Gradient Fill
  • #217 – Using a Radial Gradient Brush
  • #218 – Defining a Radial Gradient’s Focal Point
  • #219 – Changing the Radius of a Radial Gradient
  • #220 – Using the Predefined Colors
  • #221 – Changing a Brush at Run-Time
  • #222 – Example: Changing a Color Using RGB Sliders
  • #223 – Predefined System Colors
  • #224 – Using Predefined System Colors in XAML
  • #225 – Using a Brush that Will Update When a System Color Changes
  • #226 – Gradient Fills Adjust to the Size of the Control
  • #227 – You Can Specify Gradient Fills in Absolute Coordinates
  • #228 – Starting/Ending a Gradient Fill Outside a Control
  • #229 – Using a Gradient Brush for a Window’s Border
  • #230 – Changing a Radial Gradient as Mouse Moves Over a Control
  • #231 – You Can Use a Brush for a Control’s Foreground
  • #232 – The DrawingVisual Class
  • #233 – An Example of Deriving from DrawingVisual Class
  • #234 – Getting a DrawingVisual Object Rendered in a Window
  • #235 – Types of Visual Content that You Can Create Using a DrawingContext
  • #236 – Drawing an Arbitrary Geometry into a DrawingVisual
  • #237 – Drawing Shapes with the Shape Subclasses
  • #239 – Creating a Custom Shape by Overriding the Shape Class
  • #240 – Shape vs. DrawingVisual
  • #241 – Rendering Text Using DrawText
  • #242 – Drawing Text Using DrawGlyphRun
  • #561 – Drawing a 3D Donut Using a Radial Gradient
  • #562 – Setting an Effect for an Element in Blend
  • #563 – Additional Effects in Expression SDK
  • #564 – Other Places to Get Third Party Effects
  • #699 – Converting an Image Control to a Bitmap
  • #1,146 – Polar Coordinate System
  • #1,147 – Converting from Polar Coordinates to Cartesian Coordinates
  • #1,148 – Sample Code to Convert from Polar to Cartesian Coordinates
  • #1,149 – Drawing an Arc in a Custom Shape
  • #1,150 – Custom Arc Shape, part II
  • #1,151 – Custom Arc Shape, part III
  • #1,152 – A Custom “Pie Slice” Shape
  • #1,153 – Handling Custom Dependency Properties that Affect Rendering
  • #1,154 – Providing Default Values for Standard Dependency Properties in Custom Controls
  • #1,155 – A Circular Progress Indicator
  • #1,156 – Changing Circular Progress Control to Be Only an Arc
  • #1,157 – Overridden Default Property Values Appear in Property Pane
  • #1,160 – Adding a Text Label to the Circular Progress Control
  • #1,161 – Using Custom Circular Progress Shape in Control Template

Input

  • #1,067 – Experimenting with Keyboard Focus
  • #1,068 – Most Controls Can Get Keyboard Focus
  • #1,069 – Main Window Initially Has Keyboard Focus
  • #1,070 – Event Sequence for Keyboard Focus Events
  • #1,071 – How TextBox Reacts to Gaining Keyboard Focus
  • #1,072 – Adding Custom Triggers Related to Keyboard Focus
  • #1,076 – Two Ways to Check for Use of Modifier Keys in Keypress Handlers
  • #1,077 – Checking for Single Modifer vs. Multiple Modifier Keys

Layout

  • #180 – How Layout Works
  • #319 – The StackPanel Stacks Controls Vertically or Horizontally
  • #320 – Default Size of StackPanel Child Controls
  • #321 – HorizontalAlignment and VerticalAlignment
  • #322 – Giving StackPanel Child Controls an Explicit Size
  • #323 – Provide Space Around StackPanel Children Using Margin
  • #324 – Setting a Margin with Different Sizes on Each Edge
  • #325 – Specifying a Margin Value in Code
  • #326 – Specifying a Symmetrical Margin Using Two Arguments
  • #327 – Provide Extra Space Within a Control Using Padding
  • #329 – Principles of Layout in WPF
  • #330 – HorizontalContentAlignment and VerticalContentAlignment
  • #331 – Default Values for HorizontalContentAlignment and VerticalContentAlignment
  • #332 – HorizontalContentAlignment and VerticalContentAlignment Are Sometimes Not Relevant
  • #333 – Margin and Padding Overview
  • #383 – The Problems with Coordinate-Based Layout
  • #384 – The Benefits of Flow-Based Layout
  • #385 – You Can Nest Panel Controls
  • #386 – Layout = Panels + FrameworkElements + Alignment/Margins/Padding
  • #387 – Set Background Color to See How Layout Works
  • #388 – Layout Containers Don’t Provide Scrolling Support
  • #389 – Wrap a Panel in A ScrollViewer to Provide Scrolling Support
  • #390 – Scrollbar Visibility in a ScrollViewer
  • #391 – Anti-Aliasing Can Lead to Fuzzy GUI Elements
  • #392 – Use SnapsToDevicePixels Property to Prevent Anti-Aliasing
  • #393 – Canvas Element
  • #398 – WrapPanel Element
  • #399 – WrapPanel Will Change Layout of its Children as its Size Changes
  • #400 – Using a WrapPanel as the Items Panel for a ListBox
  • #401 – DockPanel Element
  • #402 – Final Child of DockPanel Fills Remaining Space by Default
  • #403 – The Order of DockPanel Children Matters
  • #404 – A Grid Hosts Child Controls in Rows and Columns
  • #405 – Default Values for Grid.Row and Grid.Column Properties
  • #407 – Grid Contains Single Row and Column by Default
  • #408 – ShowGridLines Property Allows You to See Individual Cells in Grid
  • #409 – Child Elements in a Grid Size to Fit the Containing Cell
  • #410 – Default Grid Row and Column Sizes
  • #411 – Use HorizontalAlignment and VerticalAlignment to Position Child Elements within a Grid
  • #412 – Three Ways to Set Row Height or Column Width in a Grid
  • #415 – Setting Grid Row Height and Column Width Properties to Absolute Values
  • #416 – Setting Grid Rows and Columns to Autosize
  • #417 – Using Star Sizing to Distribute Space Evenly across Rows or Columns
  • #418 – Star Sizing Allows Setting Row and Column Sizes Relative to Each Other
  • #419 – How Cell Sizes are Calculated when Using Star Sizing
  • #420 – You Can Use Floating Point Values for Star Sizing
  • #421 – HorizontalAlignment, Margins and Column Widths in a Grid
  • #422 – Setting Minimum Height and Width on Rows and Columns in a Grid
  • #423 – Setting Maximum Height and Width for Rows and Columns in a Grid
  • #424 – Getting Data-Bound Items in a ListBox to Be a Consistent Size
  • #425 – SharedSizeGroup Allows Sharing Column Sizes Across Different Grids
  • #426 – Layout Panels Can Also Have Margins
  • #429 – Child Element Properties that Affect Layout
  • #430 – Setting Width and Height Using Different Units
  • #431 – Binding a Control’s Width to Its Height
  • #432 – Height and Width vs. ActualHeight and ActualWidth
  • #440 – How Alignment Properties Behave in a WrapPanel
  • #441 – Setting a Consistent Height/Width for Child Elements in a WrapPanel
  • #442 – WrapPanel Child Elements Can Be Clipped
  • #443 – Reversing the Flow Direction in a WrapPanel
  • #444 – Children of DockPanel Don’t Always Have to be Stretched
  • #445 – DockPanel Can Be Used Like a StackPanel
  • #446 – Default Docking for DockPanel Children
  • #447 – You Can Use Layout Transforms Within a DockPanel
  • #448 – Data Binding Elements in a Collection to a Grid, part I
  • #449 – Data Binding Elements in a Collection to a Grid, part II
  • #450 – Data Binding Elements in a Collection to a Grid, part III
  • #451 – Data Binding Elements in a Collection to a Grid, Part IV
  • #452 – Data Binding Elements in a Collection to a Grid, Part V
  • #453 – The UseLayoutRounding Property Aligns Things to Pixel Boundaries
  • #454 – UseLayoutRounding vs. SnapsToDevicePixels
  • #455 – Using ItemContainerStyle to Bind Data Elements in a Collection to a Grid
  • #456 – An Element in a Grid Can Span Multiple Rows or Columns
  • #457 – Use a GridSplitter to Let a User Change Row or Column Size in a Grid
  • #458 – Properties to Set When Using a Horizontal or Vertical GridSplitter
  • #459 – Using Two (or More) GridSplitter Elements in the Same Grid
  • #460 – A GridSplitter Can Share a Cell with Another Control
  • #461 – Making a GridSplitter Look Three-Dimensional
  • #462 – Drawing a Better Looking GridSplitter
  • #463 – Multiple Parallel GridSplitters
  • #464 – ShowsPreview Property Delays Row/Column Size Change Using a GridSplitter
  • #465 – Using GridSplitters with Nested Grids
  • #466 – Using a GridSplitter in Conjunction with a SharedSizeGroup
  • #467 – Use a UniformGrid for Evenly Spaced Rows and Columns
  • #468 – FirstColumn Property Allows Blank Cells in a UniformGrid
  • #469 – Filling a UniformGrid from Right to Left
  • #470 – Elements that Support RightToLeft Flow
  • #471 – How FlowDirection Works with the Image Element
  • #472 – UniformGrid Defaults to Being Square
  • #473 – Positioning Child Elements in a Canvas
  • #475 – Child Elements in Canvas Can Overlap
  • #476 – Set ZIndex Values for Child Elements of Canvas
  • #477 – Default ZIndex Value for Child Elements of a Canvas
  • #478 – Two Out of Four Margin Values Are Used for Elements in a Canvas
  • #479 – Using a Layout Transform on Child Elements in a Canvas
  • #480 – ZIndex Values and Render Transforms
  • #492 – Layout Can Change at Runtime
  • #496 – Using a StackPanel to Make a Group of Buttons the Same Size
  • #497 – Use a UniformGrid to Make a Group of Buttons the Same Size
  • #578 – Grid Row and Column Size Use GridLength Object
  • #757 – RenderSize, ActualHeight and ActualWidth
  • #758 – Access Actual Height and Width from within LayoutUpdated Event Handler
  • #760 – Horizontal and Vertical Alignment Basics
  • #761 – How FlowDirection Affects HorizontalContentAlignment
  • #762 – Set FlowDirection at Runtime Based on CurrentUICulture
  • #767 – Transform Basics
  • #768 – Scaling Transforms
  • #769 – Rotation Transforms
  • #770 – The Difference Between a LayoutTransform and a RenderTransform
  • #771 – Setting the Center Point for Rotation Transforms
  • #772 – Use RenderTransformOrigin to Change Center Point for Rotation Transforms
  • #773 – A Rotation Center Point Can Be Outside an Element
  • #774 – Translate Transforms
  • #775 – Skew Transforms
  • #776 – Setting the Center Point for Skew Transforms
  • #780 – Combining Transforms
  • #781 – Transform Order Matters
  • #782 – A RenderTransform Has Better Performance than a LayoutTransform
  • #786 – Using Data Binding to Control a 2D Transform
  • #787 – Transforming a Point Using Matrix Multiplication
  • #788 – Flipping an Element Using a Scale Transform
  • #789 – How a Scale Transform Works
  • #790 – How a Rotation Transform Works
  • #791 – Matrix Multiplication, Part I – Rows and Columns
  • #792 – Matrix Multiplication, Part II – Multiplying a Row by a Column
  • #793 – Matrix Multiplication, Part III – Procedure
  • #794 – Matrix Multiplication, Part IV – Some Examples
  • #795 – How a Translation Transform Works
  • #796 – WPF Transforms Use Homogeneous Coordinates
  • #797 – Scale Transforms Using Homogeneous Coordinates
  • #798 – Rotation Transforms Using Homogeneous Coordinates
  • #799 – How Transforms Are Combined
  • #800 – Transforms Do Not Affect ActualWidth and ActualHeight
  • #801 – Creating a Mirror Image Using a RenderTransform
  • #802 – Transforms Do Not Affect an Element’s Margins
  • #803 – Specifying an Arbitrary Transform with a MatrixTransform
  • #804 – Specifying a MatrixTransform as a Simple String
  • #805 – Some Examples of Transform Strings
  • #806 – Setting ZIndex Values of Child Elements in a Canvas from Code
  • #807 – Setting the Position of Child Elements in a Canvas from Code
  • #808 – How Shape Elements Are Positioned within a Canvas
  • #1,041 – Stretched Child Elements Not Stretched when Rotated
  • #1,042 – How FlowDirection Affects a StackPanel
  • #1,044 – Placing More than One Element in a Grid Cell
  • #1,045 – Control Layering of Elements in a Grid Using ZIndex
  • #1,046 – Setting the Background Color of a Cell in a Grid
  • #1,047 – Setting the Size of a Grid’s Rows or Columns from Code
  • #1,048 – How to Set a GridSplitter’s Alignment Properties
  • #1,049 – How the GridSplitter Behaves when Cells Use Star Sizing
  • #1,050 – How the GridSplitter Behaves when Cells Use Absolute Sizing
  • #1,051 – How the GridSplitter Behaves when Cells Use Auto Sizing
  • #1,052 – Making Two Columns in a Grid the Same Size
  • #1,053 – How SharedSizeGroup Relates to Column Sizing
  • #1,054 – TabPanel Wraps and Evenly Spaces
  • #1,055 – Canvas Does Not Clip Child Elements
  • #1,056 – Grid Clips Child Elements
  • #1,057 – Preventing a Grid from Clipping a Child Element
  • #1,058 – Translation Makes No Sense within Layout Transforms
  • #1,059 – Clipping vs. Resizing in a Grid
  • #1,060 – Clipping in Grid Happens Before Render Transforms
  • #1,061 – Scaling Content Using a ViewBox
  • #1,062 – Scaling a Canvas Using a ViewBox
  • #1,063 – ViewBox Stretching Options
  • #1,064 – Limiting ViewBox to Scale in Just One Direction
  • #1,065 – ViewBox Child Must Have Explicit Size
  • #1,162 – Layout in Action, part I
  • #1,165 – Layout in Action, part II
  • #1,166 – Layout in Action, part III
  • #1,167 – Layout in Action, part IV
  • #1,168 – Layout in Action, part V
  • #1,169 – Custom Panel, part I (Measure and Arrange)
  • #1,170 – Custom Panel, part II (Simple Arrangement of Child Elements)
  • #1,171 – Custom Panel, part III (Using DesiredSize)
  • #1,172 – Custom Panel, part IV (ZIndex)
  • #1,173 – Custom Panel, part V (Two Columns)
  • #1,174 – Custom Panel, part VI (Attached Properties)
  • #1,175 – Custom Panel, part VII (Using Attached Property to Arrange)
  • #1,176 – Custom Panel, part VIII (Treemap-like Visualization)
  • #1,197 – Autosizing in a Grid with Maximum Size
  • #1,201 – How to Share Star Sized Column Sizes

Localization

  • #1,112 – Internationalization vs. Localization
  • #1,113 – Use of Cultures in Internationalization
  • #1,114 – Culture Codes
  • #1,115 – Internationalization I – Obey CurrentCulture for Output
  • #1,116 – An Example of Output that Obeys CurrentCulture
  • #1,117 – Internationalization II – Obey CurrentCulture for Input
  • #1,118 – An Example of Input that Obeys CurrentCulture
  • #1,119 – Localization I – Set UICulture Tag
  • #1,120 – Getting a List of All Supported Cultures
  • #1,121 – Localization II – Assigning UIDs to All Localizable Elements
  • #1,122 – Localization III – Updating UIDs after Initial Creation
  • #1,123 – Localization IV – Download and Build the LocBaml Tool
  • #1,124 – Localization V – Extracting Localizable Content Using LocBaml
  • #1,125 – Localization VI – Interpreting CSV File That Is Output by LocBaml Tool
  • #1,126 – Localization VII – Preventing Translator from Modifying Certain Elements
  • #1,127 – Localization VIII – Passing Comments On to the Translator
  • #1,128 – Localization IX – Localizing Content
  • #1,129 – Localization X – Integrating Translations Back into Application
  • #1,130 – Localization XI – Satellite Assemblies
  • #1,131 – Localization XII – Set NeutralLanguageResources Attribute
  • #1,132 – Localization XIII – Verifying Localized Content
  • #1,133 – Localization XIV – Add Content to Already Localized Application
  • #1,134 – Localization XV – Localizing Other Content

Media

  • #8 – Audio and Video
  • #698 – Playing an MP3 File Using a MediaPlayer Object

Miscellaneous

  • #115 – Downloading All .NET 4 Source Code
  • #238 – The Best Books on WPF
  • #498 – A List of WPF Blogs and Forums
  • #526 – Use Adobe Kuler to Create Color Themes
  • #673 – Mapping Mouse Position to Color
  • #674 – Mapping Mouse Position to Color, part II
  • #688 – Moving an Element with the Mouse
  • #709 – Changing the Cursor
  • #718 – Copying Text To and From the Clipboard
  • #719 – ASCII Art Generator
  • #720 – Discovering What Kind of Data Is on the Clipboard
  • #721 – A Tool for Viewing the Clipboard
  • #724 – Sample Code for Examining Control Templates
  • #727 – Getting a List of Files from the Clipboard
  • #728 – Using the Clipboard to Transfer Other Types of Data
  • #763 – The Difference Between CurrentCulture and CurrentUICulture
  • #764 – Current Culture Is Used When Converting Data to A String
  • #765 – WPF Data Binding Ignores CurrentCulture
  • #766 – WPF Data Binding Ignores Custom Formatting
  • #783 – Downloading and Installing the WPF Performance Suite
  • #784 – Using the Perforator Tool to Analyze WPF Application Performance
  • #785 – Using the Visual Profiler Tool
  • #823 – Setting a Cursor from XAML
  • #824 – Setting a Cursor on a Top Level Element
  • #826 – Lower-Level Elements Can Have Different Cursor
  • #827 – Overriding the Cursor Properties of Child Elements
  • #829 – Setting an Application-Wide Cursor from Code
  • #830 – Loading a Cursor from a File
  • #831 – Embedding a Cursor in Your Project as a Resource
  • #832 – Creating a Cursor File
  • #946 – Checking for Valid Characters in a String
  • #962 – A Color Selection Box Organized by Hue, part I
  • #963 – A Color Selection Box Organized by Hue, part II
  • #1,103 – Configuring a Splash Screen
  • #1,104 – How the Splash Screen Works
  • #1,106 – Creating a Single Instance Application
  • #1,107 – Accessing an Embedded Resource Using a Uri
  • #1,108 – Use Reflector to Get List of Resources
  • #1,109 – Accessing a Resource in a Different Assembly
  • #1,110 – Using a Resource as a Content File
  • #1,111 – Referencing Content Files from XAML

Security

  • #951 – Security Issues when Storing Confidential Data in Strings
  • #952 – Security Issues with Managed Strings
  • #953 – Use a SecureString Object to Store Confidential Text Data
  • #954 – Store Confidential Data Only Within SecureString Instances
  • #955 – Getting Data Out of a SecureString
  • #956 – PasswordBox Stores Password as a SecureString

Styles

  • #1,200 – Overriding a Default Style

Visual Studio

  • #3 – Tools for Developing WPF Applications
  • #4 – WPF Replaces Windows Forms
  • #37 – Choosing Which Version of the .NET Framework to Target
  • #88 – Finding Metadata for WPF Types
  • #89 – Using Visual Studio to Follow the Inheritance Chain for WPF Types
  • #90 – Stepping Into .NET Source Code in Visual Studio 2010
  • #91 – What InitializeComponent() Does
  • #128 – Using Code Snippets to Implement a Dependency Property
  • #181 – Creating a WPF Development Environment
  • #182 – Create a WPF Project from Either Visual Studio or Blend
  • #183 – Project Types Available from Visual Studio 2010 and Expression Blend 4
  • #184 – Creating a WPF Application Using Visual Studio
  • #186 – When to Use Blend (vs. Visual Studio)
  • #187 – Adding Controls to a Window Using Visual Studio
  • #189 – Adding an Event Handler to a Control Using Visual Studio
  • #193 – You Can Have a Project Open in Blend and Visual Studio at the Same Time
  • #288 – Editing WPF Code-Behind in Visual Studio
  • #290 – Using Intellisense in Visual Studio
  • #291 – Intellisense Lists Available Methods and Properties
  • #292 – Intellisense Includes Information About a Method’s Parameters
  • #293 – Intellisense Will Show Overloaded Methods
  • #294 – Intellisense Is Also Available in the XAML Editor
  • #413 – Creating a Grid from the Visual Studio Designer
  • #722 – Get a Free Copy of Visual Studio 2012
  • #723 – Turning Off All Caps Menus in Visual Studio 2012
  • #994 – Viewing the Visual Tree from within Visual Studio
  • #1,158 – Managing using Directives, part I
  • #1,159 – Managing using Directives, part II

Windows

  • #195 – The Venerable MessageBox
  • #196 – Getting a Result Back from a MessageBox
  • #613 – Window Event Sequence
  • #614 – Events that Fire When You Switch Between Windows
  • #660 – Changing the Double-Click Speed in Windows 8
  • #1,032 – Show Progress on Windows Taskbar Icon
  • #1,195 – Making a Window Partially Transparent
  • #1,196 – Making a Window Fully Transparent

XAML

  • #56 – XAML
  • #57 – Markup vs Code
  • #58 – Other Places that XAML Is Used
  • #59 – XAML in Visual Studio 2010
  • #60 – XAML in Expression Blend
  • #61 – Exporting XAML From Expression Design
  • #62 – BAML is Compiled XAML
  • #65 – XAML Vocabularies
  • #66 – XAML Elements Map to Instances of .NET Types
  • #67 – XAML Attributes Map to Property Values
  • #68 – Nesting XAML Elements Expresses Containment
  • #69 – Internet Explorer Can Interpret XAML Directly
  • #70 – Specifying Event Handlers in XAML
  • #71 – XAML Files Have A Single Root Element
  • #72 – XAML Namespaces
  • #73 – Multiple Namespaces Using Prefixes
  • #74 – Property Element Syntax
  • #75 – Sometimes You Must Use Property Element Syntax
  • #76 – Two Types of Elements in XAML
  • #77 – XAML Collection Syntax
  • #78 – Setting the Value of a Content Property By Setting Child Element
  • #79 – Content Properties for Common WPF Types
  • #80 – Content Properties and Collection Syntax Express UIElement Containment
  • #81 – XAML Is Case Sensitive
  • #82 – How XAML Handles Whitespace
  • #83 – Collection Syntax for Read-Only vs. Read-Write Properties
  • #84 – Store Reusable Objects in a Resource Dictionary
  • #85 – Two Main Namespaces Used in Every WPF XAML File
  • #86 – The Class Attribute Points to Your Code-Behind
  • #87 – Type Converters
  • #92 – Markup Extensions
  • #93 – Specifying Markup Extensions Using Property Element Syntax
  • #94 – Naming Elements
  • #95 – x:Name vs. Name
  • #96 – Common XAML Namespace Attributes
  • #97 – Attached Properties
  • #98 – How Attached Properties Work in WPF
  • #99 – Creating Custom Objects in XAML
  • #100 – Loose XAML Files
  • #101 – What Visual Studio Does with Your XAML
  • #102 – Using XamlReader to Load a Loose XAML File
  • #103 – XAML 2009
  • #104 – Using FindName to Find Named Children of a Control
  • #105 – Viewing BAML as XAML
  • #106 – Set Property Value to Point to Another Object
  • #107 – Markup Extensions in the XAML Namespace

你可能感兴趣的:(操作系统,ui,runtime)