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= ...
随机推荐
- 黄聪:jquery mobile使用form进行post提交表单没有反应,显示空白页解决方案
jquery mobile这货会自动用Ajax方式. 所以需要在表单form标签添加data-ajax="false"这个元素. <form method="pos ...
- 黄聪:Discuz!X/数据库操作方法、DB::table、C::t
函数 功能 DB::table($tablename) 获取正确带前缀的表名,转换数据库句柄, DB::delete($tablename, 条件,条数限制) 删除表中的数据 DB::insert($ ...
- HDU 1257 最少拦截系统(贪心)
解题思路:用一个vector存下数据,从头开始非递增遍历,并把符合条件的删除,一次操作,ans++,当vector为空时退出循环.(PS:学到了vector的erase操作,竟然还有返回值,涨姿势了) ...
- [物理学与PDEs]第2章 流体力学
[物理学与PDEs]第2章第1节 理想流体力学方程组 1.1 预备知识 [物理学与PDEs]第2章第1节 理想流体力学方程组 1.2 理想流体力学方程组 [物理学与PDEs]第2章第1节 理想流体力学 ...
- DataTable中的数据赋值给model z
create table memberinfo ( member_id int, member_name varchar(20), member_birthday varchar(50) ) go / ...
- ORM框架:EF与NHibernate了解
在.Net Framework SP1微软包含一个实体框架(Entity Framework),此框架可以理解成微软的一个ORM产品.用于支持开发人员通过对概念性应用程序模型编程(而不是直接对关系存储 ...
- windows timeGetTime() 函数 获取系统从开机到现在的毫秒时间值
#include <windows.h> #include <iostream> #pragma comment( lib,"winmm.lib" ) in ...
- 微信企业号开发--手机删除键keyup事件无效
$('#input').keyup(function(){}); 其他的按键都是有效的,但是唯独删除按键无效. 以下方法可以解决: $('#input').bind('input propertych ...
- 关于 Python Iterator 协议的一点思考
转:http://www.jianshu.com/p/dcf83643deeb Python 中有好几种容器或者序列类型:list tuple dict set str,对于这些类型中的内容,往往需要 ...
- Oracle 数据类型映射C#
Oracle 数据类型映射 下表列出 Oracle 数据类型及其与 OracleDataReader 的映射. Oracle 数据类型 由 OracleDataReader.GetValue 返回的 ...