WPF入门3:绑定

WPF入门3:绑定

学习如何从一个元素提取信息,并在另一个元素上显示信息, 而不用编写一行代码.

什么是绑定 (Binding)?

         绑定顾名思义,是将我们获取到的数据和UI上的控件绑定起来利用数据的变化来更新界面所看到的内容。

那如何实现绑定呢?

把绑定分为五步(这个是面试中经常遇到的考点以下内容可以记在小本本上):
1.绑定目标 2.绑定属性 3.绑定模式 4.绑定数据源 5.关联资源

1.绑定目标

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

在这里插入图片描述
2.绑定属性(依赖项属性)

<TextBox Width="200" Height="25" Text="{Bingding Name}"></TextBox>
  • 绑定语法介绍

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

绑定:描述的是一种关系,同构某种关系将多个事物联系在一起。 ​
页面对象的属性(必须是依赖属性):目标 Target ​
需要显示在界面上做交互关联的数据对象 :源 Source

  • 绑定表达式
Text="{Binding Source=data,Path=value}" 

:将页面对象的某个属性与数据源建立联系。
​ 通过绑定可以将界面与数据逻辑进行隔离。

<Window x:Class="WpfApp2.BindingDemo.Window1"
        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:WpfApp2.BindingDemo"
        mc:Ignorable="d"
        Title="Window1" Height="450" Width="800">
    <Grid>
        <TextBlock Text="{Binding Source=data,Path=value}"></TextBlock>
    </Grid>
</Window>
  //备注:
  //Text:目标
  //Source=data,Path=value   源:  也是绑定表达式
            

3.绑定模式

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

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

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

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

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

在这里插入图片描述
4.绑定数据源
一般来说可以是单个变量(int , double,string)、也可以是一个数据集(List)。根据需求和场景去定义。

  • 指定方式

Source、ElementName、DataContext、RelativeSource、Path、XPath

  • ​ 数据源类型

​ 1)依赖对象作为数据源

<Window x:Class="WpfApp2.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:WpfApp2"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800" Name="window">
    <Grid>
        <StackPanel>
          <!--依赖对象绑定-->
        <TextBox Name="txt" Text="123"></TextBox>
            <TextBlock Text="{Binding ElementName= txt,Path=Text}"></TextBlock>
            <TextBlock Text="{Binding ElementName= window,Path=Title}"></TextBlock>


            <TextBlock  Text="Solider当前值:"></TextBlock>
            <TextBlock  Text="{Binding  ElementName=slider,Path= Value}"></TextBlock>
            <Slider Width="200" Name="slider"  Minimum="5" Maximum="100" HorizontalAlignment="Left"></Slider>
            <TextBlock Text="Solider最小值:"></TextBlock>
            <TextBlock Text="{Binding ElementName=slider,Path=Minimum}"></TextBlock>
        </StackPanel> 
    </Grid>
</Window>


2) 普通数据类型或集合类型作为数据源

<Window.Resources>
        <sys:String x:Key="name">小明</sys:String>
        <x:Array x:Key="data" Type="sys:String">
            <sys:String>小刚</sys:String>
        </x:Array>
    </Window.Resources>
    
     <!--普通对象,集合对象绑定   开始-->
            <TextBlock Text="{Binding Source={StaticResource name}}"></TextBlock>
            <TextBlock Text="{Binding Source={StaticResource data},Path=[0]}"></TextBlock>
            <!--普通对象,集合对象绑定   结束-->

3) 单个对象作为数据源,INotifyPropertyChanged

新建类:DataClass 继承 INotifyPropertyChanged

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WpfApp2
{
    public class DataClass : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler? PropertyChanged;
        private string  _Value;
        public string Value
        {
            get { return _Value; }
            set
            {
                _Value = value;
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Value"));
            }

        }

    }
}

<Window.Resources> 
        <local:DataClass Value="这是单个对象作为数据源,INotifyPropertyChanged  " x:Key="dataclass"></local:DataClass>
    </Window.Resources> 
<Window>
<!--单个对象作为数据源,INotifyPropertyChanged  开始-->
<TextBlock Text="{Binding Source={StaticResource dataclass},Path=Value}"></TextBlock>
<!--单个对象作为数据源,INotifyPropertyChanged  结束-->      
</Window>

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

绑定和窗体xaml.cs操作的区别在哪里?

     区别在于,窗体后台文件直接访问控件的操作是事件驱动。比如说我上一个视频讲到的button的click事件,
     如果没有事件的存在是改变不了界面的。
     绑定操作,是以数据本身的变化来通知界面显示改变的。
     UI代码和逻辑代码实现前后端分离。
阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
WPF(Windows Presentation Foundation)是一种用于创建用户界面的技术,它是微软公司在.NET Framework 3.0中引入的。WPF使用XAML语言来定义用户界面,提供了丰富的可视化效果和交互能力。初学者可以通过学习WPF入门教程PDF来快速上手这一技术。 WPF入门教程PDF通常包含以下内容: 1. WPF概述:介绍WPF的特点、优势以及其与传统WinForms技术的对比,帮助初学者了解WPF的基本概念和原理。 2. XAML语法介绍:详细解释XAML语言的语法规则和常用的标记元素,以及如何使用XAML定义用户界面的外观和行为。 3. 基本控件:讲解WPF中常用的基本控件,如按钮、文本框、标签等,以及它们的属性和事件,帮助初学者了解如何创建和操作这些控件。 4. 布局和容器:介绍WPF中的布局和容器控件,如Grid、StackPanel、Canvas等,帮助初学者了解如何将控件放置在窗口中的不同位置和方式。 5. 数据绑定:说明WPF中的数据绑定机制,以及如何将数据源与用户界面进行绑定,实现数据的显示和交互。 6. 动画和效果:介绍WPF中的动画和效果功能,帮助初学者了解如何为用户界面添加动态和吸引人的效果。 通过学习WPF入门教程PDF,初学者可以快速理解WPF的基本原理和使用方法,掌握WPF开发所需要的基本知识和技能。同时,还可以通过实践和进一步学习,不断提升自己在WPF技术方面的能力,实现更加复杂和出色的用户界面设计与开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kalvin_y_liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值