深入浅出WPF--学习笔记(20150227)

Binding基础

XAML:

<Window x:Class="Text.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        Title="WPF Test" WindowStartupLocation="CenterScreen" Height="110" Width="300">
    <StackPanel>
        <TextBox x:Name="textBoxName" BorderBrush="Black" Margin="5"/>
        <Button Content="Add Age" Margin="5" Click="Button_Click"/>
    </StackPanel>
</Window>

后台代码:

public class Student : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

private string name;
        public string Name
        {
            get { return name; }
            set
            {
                name = value;
                if (null != PropertyChanged)
                    this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Name"));
            }
        }
    }

/// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        Student stu;

public MainWindow()
        {
            InitializeComponent();

stu = new Student();
            Binding binding = new Binding();
            binding.Source = stu;
            binding.Path = new PropertyPath("Name");
            BindingOperations.SetBinding(this.textBoxName, TextBox.TextProperty, binding);
        }

private void Button_Click(object sender, RoutedEventArgs e)
        {
            this.textBoxName.Clear();
            stu.Name += "Name ";
        }
    }

Binding的数据源是对象,一个对象上可能有很多数据,这些数据通过属性暴露给外界。UI上的元素关心的那个属性成为Binding的路径(Path)。Binding是一种自动机制,当值变化后要有能力通知Binding,让Binding把变化传递给UI元素,达到此目的的方法是在属性的Set语句中激发一个PropertyChanged事件,此时需要让作为数据源的类实现System.ComponentModel名称空间中的INotifyPropertyChanged接口。当为Binding设置了数据源后,Binding就会自动侦听来自这个接口的PropertyChanged事件。

Binding binding = new Binding();声明Binding类型变量并创建实例;

Binding binding = new Binding();为Binding实例指定数据源;

binding.Path = new PropertyPath("Name");为Binding指定访问路径;

把数据源和目标连接在一起的任务使用BindingOperations.SetBinding(...)来完成。

Binding的源就是数据的源头。只要是一个对象,并且通过属性(Property)公开自己的数据,它就能作为Binding的源。

时间: 2024-11-08 14:55:59

深入浅出WPF--学习笔记(20150227)的相关文章

《深入浅出WPF》笔记——绘画与动画

<深入浅出WPF>笔记——绘画与动画 本篇将记录一下如何在WPF中绘画和设计动画,这方面一直都不是VS的强项,然而它有一套利器Blend:这方面也不是我的优势,幸好我有博客园,能记录一下学习的过程.在本记录中,为了更好的理解绘画与动画,多数的例子还是在VS里面敲出来的.好了,不废话了,现在开始. 一.WPF绘画 1.1基本图形 在WPF中可以绘制矢量图,不会随窗口或图型的放大或缩小出现锯齿或变形,除此之外,XAML绘制出来的图有个好处就是便于修改,当图不符合要求的时间,通常改某些属性就可以完成

WPF学习笔记4&mdash;&mdash;Layout之2

下面简单介绍常见的面板. 一.Grid 1.Grid关于调整行列距离有三种方法:绝对大小,自动大小,比例大小.如下: <ColumnDefinition Width="100"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="*"></Co

WPF学习笔记2&mdash;&mdash;XAML之2

三.事件处理程序与代码隐藏 例如,为一个Page添加一个Button控件,并为该Button添加事件名称Button_Click: <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="ExampleNamespace.ExampleP

WPF学习笔记系列之一 (布局详情)

布局:StackPanel  栈布局:控件不会拐弯且多出的不再显示.DockPanel   停靠布局 吸在上边下边或左右.WrapPanel    环绕布局   一行控件会拐弯Canvas  进行基于坐标的布局 Grid中若不指定Grid.Row属性及Grid.Column则默认为:0行,0列.RowDefinitions ColumnDefinitions ShowGridLines=true <ColumnDefinition Width="100"></Colu

【WPF学习笔记】之 System.Exception 对象名 &#39;XXXX&#39; 无效。

我在运行vs时候发现项目报错,如下图: 报Exception错误,对象名"XXXXXX"无效. 经过调查得知,因为连接数据库的库名写错了,如下: 对应正确数据库的库名: 把库名改正确,问题就解决了. [WPF学习笔记]之 System.Exception 对象名 'XXXX' 无效.

WPF学习笔记(XAML)

引言 这是我来院子里第一次写文章,由于工作一年半做了一些项目,但是真的感觉会的东西太少,而且基础笔记差,最近想学习一些东西,多写些文章,激励自己坚持学习下去. 由于准备用WPF做一个项目,驱动要先学习一下XAML的知识,XAML同时可以应用于WEB应用,移动应用的开发,所以有学习的价值. 概要. 下面开始进入主题,来写一下这几天XAML学习的东西. 概要 XAML(Extensible Application Markup Language),可拓展应用程序标记语言,是一种声明式语言,目的使UI

WPF学习笔记(二)----Events, Commands

1.配置事件和事件处理(Configuring Events and Event Handling) 事件在WPF编程是明显不同于那些在传统的Windows窗体的编程.WPF使用路由事件,可以存在多个控制和多个处理程序.路由事件允许您添加多个层次的复杂性和复杂的用户界面,响应用户输入.学习路由事件,包括如何处理一个路由事件,定义和注册一个新的路由事件,处理应用程序生命周期事件,并使用EventManager类. 1.1 下面使用一个实例说明如何定义.注册.封装路由事件 public abstra

【WPF学习笔记三】空WPF项目元素详解

我们在VisualStudio2010创建了一个空WPF程序,现在我们来对这个空WPF程序的所有元素进行讲解! 1.<Window x:Class="WpfApplication1.MainWindow" 2.        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3.        xmlns:x="http://schemas.microsoft.com/

WPF学习笔记-用Expression Blend制作自定义按钮

1.从Blend工具箱中添加一个Button,按住shift,将尺寸调整为125*125; 2.右键点击此按钮,选择Edit control parts(template)>Edit a copy... 3.在弹出的Create style resource对话框中,修改新按钮样式的名称 4.在左侧的Object and timeline面板中选中ContentPresenter元素,按Ctrl+X将此标记临时保存到内存中 5.选中Chrome,按Delete键删除 6.选中Template,在

WPF学习笔记1

概念:WPF,Windows Presentation Foundation也,译过来就是“Windows呈现基础” 在我们正式剖析代码之前,让我们牢记两件事:1. 这个世界是一个“组合”的世界——汽车是由一个车身和四个轮子组合成的:飞机是由机翅和机身组合成的.这些组成部分,我们称之为元素(Element).2. 在XAML文件里,每写一个元素就相当于定义了一个元素所对应的.NET Framework类的实例. 属性对象(元素)是父元素所固有的,子元素则可由设计人员来进行增减属性对象(元素)是隶