元素绑定
 简单地说,数据绑定是一种关系,该关系告诉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学习系列之六 (元素绑定)的更多相关文章

  1. SQL Server 学习系列之六

    SQL Server 学习系列之六 SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) SQL Server 学习系列之三(SQL 关键字) SQ ...

  2. WPF学习笔记三之绑定

    1.绑定模式 <TextBlock Margin="10" Text="LearningHard" Name="lbtext" Fon ...

  3. 大数据学习系列之六 ----- Hadoop+Spark环境搭建

    引言 在上一篇中 大数据学习系列之五 ----- Hive整合HBase图文详解 : http://www.panchengming.com/2017/12/18/pancm62/ 中使用Hive整合 ...

  4. ASP.NET MVC5 学习系列之模型绑定

    一.理解 Model Binding Model Binding(模型绑定) 是 HTTP 请求和 Action 方法之间的桥梁,它根据 Action 方法中的 Model 类型创建 .NET 对象, ...

  5. WPF学习系列之五(WPF控件)

    控件:    1.内容控件------这些控件能够包含嵌套的元素,为它们提供几乎无限的显示能力.内容控件包括Lable,Button 以及ToolTip类. 内容控件是更特殊的控件类型,它们可以包含( ...

  6. WPF学习系列之四(WPF事件5大类)

    WPF最重要的5类事件: 生命周期事件:这些事件将在元素被初始化,加载或卸载时发生. 鼠标事件 这些事件是鼠标动作的结果. 键盘事件 这些事件是键盘动作的结果. 手写笔事件 这些事件是作用类似铅笔的手 ...

  7. WPF学习系列之八(形状,画刷和变换)

    形状,画刷和变换   概述: 在许多用户界面技术中,普通控件和自定义绘图之间具有清晰的区别.通常来说,绘图特性只用于特定的应用程序--如游戏,数据可视化和物理仿真等.而WPF具有一个非常不同的原则.它 ...

  8. WPF学习系列之七 (样式与行为)

    样式(Styles)是组织和重用格式化选项的重要工具.不是使用重复的标记填充XAML,以设置诸如边距.颜色及字体等细节,而可以创建一系列封装所有这些细节的样式.然后可以在需要之处通过一个属性应用样式. ...

  9. WPF学习系列 简单的窗体设置

    今天要学习的源码是一个窗体设置.效果如下,可拖拽.这让我想起了vs的启动界面 下面是源码的情况 项目结构: 窗体代码: cs代码 1.新建项目 略 2.设置窗体 AllowsTransparency= ...

随机推荐

  1. activiti自定义流程之整合(一):整体环境配置

    结合之前所说的自定义流程的思路,分别是后台.前台.整合,之前的内容也分别进行了相关的练习和尝试,现在就该到了最后的整合了,依旧是以实现功能为目的,细节暂且不去管他. 因为我们实际项目后端用的是spri ...

  2. wordpress主题结构_源码

    WordPress博客主题的工作机制 WordPress主题由一系列模板文件组成,每个文件分别控制主题的特定区域.无论你处于哪个页面都能看到的网站的静态部分,由header文件.sidebar和foo ...

  3. android的m、mm、mmm编译命令

    android的m.mm.mmm编译命令的使用 android源码目录下的build/envsetup.sh文件,描述编译的命令 - m:       Makes from the top of th ...

  4. Spark 1.4连接mysql诡异的问题及解决

    在spark-default.conf文件中明明配置了mysql的数据源连接 随后启动spark-shell 执行如下测试代码: import org.apache.spark.{SparkConte ...

  5. PLSQL_Oracle临时表Temporary Table基本概念和用法(概念)

    2014-06-08 Created By BaoXinjian

  6. Python标准库03 路径与文件 (os.path包, glob包)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 路径与文件的简介请参看Linux文件系统 os.path包 os.path包主要是 ...

  7. chrome调试js工具的使用

    Audits标签页 这个对于优化前端页面.加速网页加载速度很有用哦(相当与Yslow): 点击run按钮,就可以开始分析页面,分析完了就可以看到分析结果了: 它甚至可以分析出页面上样式表中有哪些CSS ...

  8. Echarts-地图扩展-标准geoJson格式扩展地图-例子

    本人菜鸟一枚,最近搞echarts地图.看到官方给的“标准geoJson格式扩展地图-全国主要城市”的例子,瞬间就蒙逼了.不怪人官网的例子不好,实在是我看不懂它是怎么弄得.最后折腾了一晚上,最后终于弄 ...

  9. tomcat服务器不输出访问日志

    有时候一个WEB服务作为接口部署在tomcat下,因为访问很频繁,导致/var/log/tomcat7下的访问日志急剧膨胀,影响服务器的性能. 在这里我的方法是关闭访问日志,关闭方法为将访问日志的输出 ...

  10. Bitbucket使用方法

    一.软件及SSH keys: 由于我的Bitbucket账号的邮箱及用户名与Github相同,所以SSH Public Keys可以用Github的,登录Bitbucket,悬浮在用户名boliqua ...