首页 > 其他分享 >WPF-04 数据绑定

WPF-04 数据绑定

时间:2023-02-06 21:32:23浏览次数:35  
标签:INotifyPropertyChanged 04 数据源 绑定 Binding WPF 属性

下图展示WPF中数据绑定基本概念

WPF-04 数据绑定_数据绑定

 在WPF中Binding对象是一根连接绑定目标和数据源的桥梁,任何一方变化都会通过Binding来通知。

Code

<Window x:Class="Example_03.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Example_03" mc:Ignorable="d" Title="MainWindow" Height="200" Width="400">
<Window.Resources>
<local:Student x:Key="StudentSource" StuName="张三"></local:Student>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.3*"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="学生姓名:" Grid.Row="0" Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Center"/>
<TextBox Grid.Row="0" Grid.Column="1" Height="30" Width="200"
Text="{Binding Source={StaticResource StudentSource},Path=StuName,UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock Text="学生姓名:" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Center"/>
<TextBlock Grid.Row="1" Grid.Column="1" Height="30" Width="200"
Text="{Binding Source={StaticResource StudentSource},Path=StuName}"/>
</Grid>
</Window>
public class Student : INotifyPropertyChanged
{
private string _stuname;
public Student()
‍ ‍ ‍‍‍‍‍‍{‍‍‍ ‍‍‍‍‍‍‍‍}
public Student(string value)
{
_stuname = value;
}

public string StuName
{
get { return _stuname; }
set
{
_stuname = value;
OnPropertyChanged("StuName");
}
}
/// <summary>
/// 定义事件
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
//创建 OnPropertyChanged 方法触发事件
protected void OnPropertyChanged(string _stuname)
{
var handler = PropertyChanged;
handler?.Invoke(this, new PropertyChangedEventArgs(_stuname));
}
}

Binding 的工作原理:

Source 表示绑定数据源. Path 绑定的属性. UpdateSourceTrigger触发事件通知数据源

Mode 绑定的方向.如下:OneWay、TwoWay、OneWayToSource

Oneway 表示数据源发生变化时,通知目标属性,但绑定目标改变不会改变绑定源

TwoWay 表示任何一方发生变化都会通知对方

OneWayToSource 表示目标属性发生变化时通知数据源

UpdateSourceTrigger=PropertyChanged 表示属性的值发生变化时,数据源会更新


WPF-04 数据绑定_数据绑定_02


INotifyPropertyChanged接口说明:


OneWay:绑定源实体类没有实现INotifyPropertyChanged接口,数据源发生变化时,绑定目标是不会发生变化,所以我们数据源实体需要实现INotifyPropertyChanged接口

TwoWay模式:绑定源实体类没有实现INotifyPropertyChanged接口,控件更改会让数据源立即发改变,但是数据源更改,绑定目标不会发生变化,所以我们数据源实体需要实现INotifyPropertyChanged接口两个控件属性之间也可以实现数据绑定,得益于WPF依赖属性的强大之处.WPF大部分UI控件的属性都是依赖属性

 

WPF-04 数据绑定_数据绑定_03


 这里引出一个概念依赖属性:Windows Presentation Foundation (WPF) 提供了一组服务,这些服务可用于扩展CLR)属性的功能。这些服务通常统称为 WPF 属性系统。由 WPF 属性系统支持的属性称为依赖项属性。依赖属性是一种可以自己没有值,并能通过使用Binding从数据源获得值的属性(通俗的讲,就是依赖在别的属性上)依赖属性是WPF基础关键概念,包含动画、属性值继承、数据绑定和样式都使用依赖属性,下节我们将介绍依赖属性。

  想要更快更方便的了解相关知识,可以关注微信公众号

WPF-04 数据绑定_WPF_04



标签:INotifyPropertyChanged,04,数据源,绑定,Binding,WPF,属性
From: https://blog.51cto.com/axzxs/6040535

相关文章

  • WPF-03 资源之Resources
    WPF中有两种类型资源StaticResource、DynamicResource,资源本质上就是一个对象。 这节我们主要介绍静态资源StaticResource(静态资源)在第一次编译后就确定的......
  • WPF-03 资源之Resources
    WPF中有两种类型资源StaticResource、DynamicResource,资源本质上就是一个对象。 这节我们主要介绍静态资源StaticResource(静态资源)在第一次编译后就确定的......
  • IEC104 从站作为客户端服务频繁中断
    之前t1=15,t3=20,调整为60,60后效果好很多。参考:https://blog.csdn.net/qinbo1234567890/article/details/123903504为了能对TCP连接进行检查和维护,104规定了几个超时时间:t......
  • 杭电1048--输出输出格式控制
    TheHardestProblemEver​​http://acm.hdu.edu.cn/showproblem.php?pid=1048​​ProblemDescriptionJuliusCaesarlivedinatimeofdangerandintrigue.Thehar......
  • WPF-06 样式(Style)
    在我们前面介绍资源的时候,我们提到了样式表,如果你之前是做Web开发的,你会发现Style有点类似于Web中的CSS。控件级别样式我们可以在控件级别定义自己的样式,控件级......
  • WPF-06 样式(Style)
    在我们前面介绍资源的时候,我们提到了样式表,如果你之前是做Web开发的,你会发现Style有点类似于Web中的CSS。控件级别样式我们可以在控件级别定义自己的样式,控件级......
  • 服务的生命周期-绑定服务的生命周期
    <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent......
  • [Ubuntu]11.04 下安装 JAVA 方法
    UbuntuJDK安装配置的详细步骤:UbuntuJDK安装配置1.下载jdk下载连接http://java.sun.com/javase/downloads/index.jsp选择jdk-6u14-linux-i586.bin......
  • 重写--Java基础049
    /*目前的问题:父类的功能无法满足子类的需求。方法重写的前提:必须要存在继承的关系。方法的重写:子父类出了同名的函数,这个我们就称作为方法的重写。什么是时候要使用方法......
  • 继承--Java基础047
    /*面向对象的三大特征:1.封装2.继承3.多态.继承:继承是通过关键字extends体现的。继承的格式:class类名1extends类名2{}继承要注意的事项:1.千万不要为了......