WPF绑定基础笔记

一、什么是绑定 (Binding)

绑定顾名思义,是将我们获取到的数据和UI上的控件绑定起来利用数据的变化来更新界面所看到的内容。
把绑定分为五步:
1.绑定目标 2.绑定属性 3.绑定模式 4.绑定数据源 5.关联资源

1.1 绑定目标

绑定目标很好理解,其实就是你要操作绑定的控件。例如:Button,TextBox。

<TextBox Width="200" Height="25"></TextBox>

在这里插入图片描述

1. 2 绑定属性(依赖项属性)

<TextBox Width="200" Height="25" Text="{Bingding Name}"></TextBox>

绑定语法介绍:
如上代码块中,Text就是绑定属性了, Bingding 是绑定关键字,而后面的Name就是你要绑定的数据源的变量名。

1.3 绑定模式

  • TwoWay 无论是目标属性还是源属性,只要发生了更改,TwoWay 就会更新目标属性或源属性。

  • OneWay 仅当源属性发生更改时更新目标属性。

  • OneTime 仅当应用程序启动时或 DataContext 进行更改时更新目标属性。

  • OneWayToSource 在目标属性更改时更新源属性。

  • Default:模式根据实际情况来定,如果是可编辑的就是TwoWay,只读的就是OneWay.

  • 在这里插入图片描述

1.4 绑定数据源

一般来说可以是单个变量(int , double,string)、也可以是一个数据集(List)。根据需求和场景去定义。

1.5 关联资源 DataContext

在每一个窗体中,都有一个DataContext ,它是一个object类型主要用来存储绑定资源。

二、绑定和窗体xaml.cs操作的区别

区别在于,窗体后台文件直接访问控件的操作是事件驱动。比如说我上一个视频讲到的button的click事件,如果
没有事件的存在是改变不了界面的。
绑定操作,是以数据本身的变化来通知界面显示改变的。
UI代码和逻辑代码实现前后端分离。

三、绑定列子

MainWindow.xaml

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="96*"/>
            <RowDefinition Height="69*"/>
            <RowDefinition Height="79*"/>
            <RowDefinition Height="76*"/>
        </Grid.RowDefinitions>
        <TextBox HorizontalAlignment="Left" Text="{Binding mytext}" Height="23" Margin="138,32,0,0" Grid.Row="1" TextWrapping="Wrap"  VerticalAlignment="Top" Width="230"/>
        <TextBox HorizontalAlignment="Left" Text="{Binding mytext}" Height="23" Margin="138,22,0,0" Grid.Row="2" TextWrapping="Wrap"  VerticalAlignment="Top" Width="230" Background="Red"/>
        <Button Content="Button" HorizontalAlignment="Left" Margin="188,28,0,0" Grid.Row="3" VerticalAlignment="Top" Width="75" RenderTransformOrigin="-0.593,0.428"/>
    </Grid>

MainWindow.xaml.cs

  public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            this.DataContext = new mymodel();  //DataContext 用mymodel类
        }
    }

mymodel.cs

using System.ComponentModel;   //添加命名空间
namespace myWpf_binding
{
    class mymodel:INotifyPropertyChanged  //继承INotifyPropertyChanged接口
    {

        public event PropertyChangedEventHandler PropertyChanged;
        private string _mytext="123";
        public string mytext
        {
            set
            {
                 _mytext = value;
                PropertyChanged.Invoke(this, new PropertyChangedEventArgs("mytext"));

            }
            get
            {
                return _mytext;
            }
        }

    }
}

效果图
在这里插入图片描述
当text1改变时,同时也会改变text2的内容,因为绑定了同一个mytext字段。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值