WPF学习系列之六 (元素绑定)
元素绑定
简单地说,数据绑定是一种关系,该关系告诉WPF从一个源对象提取一些信息,并使用这些信息设置目标对象的属性。目标属性总是依赖属性,并且通常位于WPF元素中。
一.将元素绑定到一起
<Window x:Class="StudyWPF.元素绑定"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="元素绑定" Height="300" Width="300">
<Grid>
<Slider Name="sliderFontSize" Margin="3" Minimum="1" Maximum="40" Value="10" TickPlacement="TopLeft"></Slider>
<TextBlock Margin="10" Text="Simple Text" Name="lblSampleText" FontSize="{Binding ElementName=sliderFontSize,Path=Value}"></TextBlock>
</Grid>
</Window>
这样 字体的大小就绑定了Slider的Value的内容 了
2.绑定错误
WPF不会引发异常来通知与数据绑定相关的问题。如果指定的元素或属性不存在,不会收到任何指示;反而,只是在目标属性中不能显示数据。
但是是可以在VS 的Output 窗口中看到提示信息的。
3.绑定模式
数据绑定的一个特性是目标会被自动更新,而不管源是被如何修改的,在这个示例中,源只能通过一种方式进行修改,但是当用一个按钮改变了Label字体大小 后再拖动Slider后Label的字体的大小 也不再改变了
4.使用代码创建绑定
Binding binding=new Binding();
binding.Source=sliderFontSize;
binding.Path=new PropertyPath("Value");
binding.Mode=BindingMode.TwoWay;
lblSampleText.SetBinding(TextBlock.FontSize,binding);
<TextBox Text="{Binding ElementName=lblSampleText, Path=FontSize, Mode=TwoWay}"></TextBox>
5.多绑定
就是多个控件的连续绑定如下例子中,把Slider的Value值 用在TextBlock的字体大小 上,而又把TextBlock的字体 大小绑定在TextBox的Content上代码如下:
<StackPanel>
<Slider Name="sliderFontSize" Margin="3" Minimum="1" Maximum="100" Value="10" TickPlacement="TopLeft"></Slider>
<TextBlock Margin="10" Text="Simple Text" Name="lblSampleText" FontSize="{Binding ElementName=sliderFontSize,Path=Value,Mode=TwoWay}"></TextBlock>
<TextBox Margin="10" Text="{Binding ElementName=sliderFontSize, Path=Value, Mode=TwoWay}"></TextBox>
6. 绑定更新
在上面的例子中当虽然设置的TextBox的binding。Mode是twoWay 但是当改变Textbox内容时还是不能改变TextBlock字体的大小,这是因为它的Binding.UpdateSourceTrigger属性控制的。
它的枚举值有如下:
a。PropertyChanged 当目标属性发生变化时立即更新源。
b。LostFocus 当目标属性发生变化并且目标丢失焦点时更新源。
c.Explicit 除非调用BindginExpressiom.UpdateSource()方法,否则无法更新源。
d.Default 根据目标属性的 无数据确定更新行为(从技术角度讲,是根据 FrameWorkPropertyMetadata.DefaultUpdateSourceTrigger属性决定更新行为。) 大多数属性的默认行为是PropertyChanged.但TextBox.Text属性的默认行为是LostFocus.
WPF学习系列之六 (元素绑定)的更多相关文章
- SQL Server 学习系列之六
SQL Server 学习系列之六 SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) SQL Server 学习系列之三(SQL 关键字) SQ ...
- WPF学习笔记三之绑定
1.绑定模式 <TextBlock Margin="10" Text="LearningHard" Name="lbtext" Fon ...
- 大数据学习系列之六 ----- Hadoop+Spark环境搭建
引言 在上一篇中 大数据学习系列之五 ----- Hive整合HBase图文详解 : http://www.panchengming.com/2017/12/18/pancm62/ 中使用Hive整合 ...
- ASP.NET MVC5 学习系列之模型绑定
一.理解 Model Binding Model Binding(模型绑定) 是 HTTP 请求和 Action 方法之间的桥梁,它根据 Action 方法中的 Model 类型创建 .NET 对象, ...
- WPF学习系列之五(WPF控件)
控件: 1.内容控件------这些控件能够包含嵌套的元素,为它们提供几乎无限的显示能力.内容控件包括Lable,Button 以及ToolTip类. 内容控件是更特殊的控件类型,它们可以包含( ...
- WPF学习系列之四(WPF事件5大类)
WPF最重要的5类事件: 生命周期事件:这些事件将在元素被初始化,加载或卸载时发生. 鼠标事件 这些事件是鼠标动作的结果. 键盘事件 这些事件是键盘动作的结果. 手写笔事件 这些事件是作用类似铅笔的手 ...
- WPF学习系列之八(形状,画刷和变换)
形状,画刷和变换 概述: 在许多用户界面技术中,普通控件和自定义绘图之间具有清晰的区别.通常来说,绘图特性只用于特定的应用程序--如游戏,数据可视化和物理仿真等.而WPF具有一个非常不同的原则.它 ...
- WPF学习系列之七 (样式与行为)
样式(Styles)是组织和重用格式化选项的重要工具.不是使用重复的标记填充XAML,以设置诸如边距.颜色及字体等细节,而可以创建一系列封装所有这些细节的样式.然后可以在需要之处通过一个属性应用样式. ...
- WPF学习系列 简单的窗体设置
今天要学习的源码是一个窗体设置.效果如下,可拖拽.这让我想起了vs的启动界面 下面是源码的情况 项目结构: 窗体代码: cs代码 1.新建项目 略 2.设置窗体 AllowsTransparency= ...
随机推荐
- sql中count(*)和count(字段名)区别
数据测试:见图 sql 语句见分晓: SELECT COUNT(*) c1 ,COUNT(ADDRESS) c2 FROM test 显而易见,count(*)统计的是结果集的总条数,count(字段 ...
- 想当然是编程最大的坑,记更新删除过期cookie无效有感
一般来说只要设置了cookie的过期时间,就可以实现删除cookie的作用. 可是我尝试了设置过期时间,清除cookie内容都无效. 最后才发现,我根本没有执行到那段设置过期的代码. 刚开始是因为登出 ...
- Redis 内存使用优化与存储
Redis 常用数据类型 Redis 最为常用的数据类型主要有以下五种: • String • Hash • List • Set • Sorted set 在具体描述这几种数据类型之前,我们先通过一 ...
- PHP框架 Laravel Eloquent ORM 批量插入数据 && 批量更新目前没有
foreach ($products as $v=>$a) { $count[] = array('product_name' => $a['name'], 'product_weight ...
- 如何利用jQuery进行简单表单验证
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name=&qu ...
- Android 开发中常用 ADB 命令总结
adb 的全称为 Android Debug Bridge,就是起到调试桥的作用.通过 adb 我们可以在 Eclipse 中方便通过 DDMS 来调试 Android 程序,说白了就是 debug ...
- Bridge桥接模式
当我们的功能要在多个维度进行扩展时,各个维度之间可以交叉组合,就可以考虑使用桥接模式. 将抽象部分与实现部分分离,使它们都可以独立的变化. ...
- [AIR] 利用SnapShot.exe实现QQ截屏功能
主类(可作文档类): package { import flash.display.Bitmap; import flash.display.Sprite; import flash.events.E ...
- java 反射技术
什么是反射?反射就是将字节码中的各种成分映射到相应的java类中来,java反射技术自JDK1.1以来就出现了,目前大多数流行的框架都采用了这种技术,可见其重要性,这篇文章将详细介绍我对java反射技 ...
- (转)读取XML数据到treeView中
原文地址,只为收藏:http://www.cnblogs.com/ylwn817/archive/2011/12/15/2288512.html /// <summary> ...