首页 > 其他分享 >WPF绑定

WPF绑定

时间:2022-08-22 16:44:40浏览次数:64  
标签:控件 text 绑定 list textblock WPF 属性

初学者。博客仅做个人的理解整理,不到位的地方欢迎大佬们指出,感谢。

 

1.绑定使用的关键字:Binding

2.为什么要?

把界面上的控件的属性和后台的变量绑定起来,达到效果:在后代修改变量,界面自动更新数据。

控件的属性必须时依赖属性或者依赖附加属性才能绑定

3.绑定表达式中常用的关键字:

 Source、ElementName、DataContext、RelativeSource、Path、XPath

4.例子

既然要绑定,就会有谁绑定谁的关系,也就是绑定目标,绑定数据源,数据从哪里到哪里。

 

4.1界面上2个控件进行绑定:使用ElementName指定绑定目标,Path指定绑定目标的具体的属性

  2个textblock,textbloc2的text属性绑定textblock1的text

上面这种绑定如果不写path呢?找不到绑定目标对象的属性,就会显示绑定目标的对象类型

 

 绑定目标的属性也可能是一个对象,而不是一个基本类型,这时候还可以继续绑定,绑定目标属性的属性的属性,这样。

如:

textblock2的text属性绑定textblock1的text的属性的length属性

 

 4.2控件的属性绑定一个string,list,和类对象

<TextBlock Text="{Binding Mytest}"/>

Textblock的text属性绑定一个string类型的变量Mytest,Mytest定义在主窗体的cs文件中(MainWindow.xaml.cs)

public string Mytest { get; set; } = "testvalue";

先看下结果:

 这时候需要注意一下,textblock控件时在xaml中,Mytest变量是在Class1.cs中,需要指定一个datacontext,不然在xaml中找不到变量Mytest

在class1类中定义一个list

 界面上控件textblock绑定到这个list,直接绑定list,会显示对象类型,可以通过下标的方式,指定绑定到list中的某个元素

 

 Path可以省略掉,直接写属性,这都没写source,3个textblock会从datacontext去找

 DataContext和resource一样,每个控件对象都有,先找自身的,然后找父对象的,最后找到window窗体的。

5.RelativeSource:PreviousData TemplatedParent Self FindAncestor

5.1 Self 

绑定目标属于自己的某个属性,如,textblock的text绑定自己属性height

 <TextBlock Height="36" Background="Moccasin" Text="{Binding Path=Height,RelativeSource={RelativeSource Mode=Self}}"/>

 5.2 FindAncestor 

绑定时,如果不知道数据源的名字,无法使用elementname,那么AncestorType可以指定从哪个控件类型找,或AncestorLevel从自己向上找父对象的层数,如果指定了AncestorType,那么AncestorLevel的层数会略过非AncestorType类型的控件

<Border Name="Border1">
            <StackPanel Name="Stacpanel2">
                <Border Name="Border2">
                <StackPanel Name="Stacpanel1">
                <Border Name="Border3">
                    <TextBlock Background="Red" Text="{Binding Path=Name ,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Border,AncestorLevel=2}}"/>
                </Border>
                </StackPanel>
            </Border>
            </StackPanel>
        </Border>

 6.UpdateSourceTrigger 

绑定的两端,一端发生变化,什么时候或者什么情况才触发另一端变化?

4种情况:默认,属性一旦发生变化,控件失去焦点,显示(写代码手动触发)

 mode:两端数据变化,是单向还是双向,还是只触发一次

7.静态对象怎么绑定?

定义:

 绑定:

<!--绑定静态变量-->
<TextBlock Background="DarkKhaki" Text="{Binding (local:Class2.StaticValue)}"/>

 

标签:控件,text,绑定,list,textblock,WPF,属性
From: https://www.cnblogs.com/1024E/p/15739559.html

相关文章

  • 日常开发记录-elementUI表格特殊值标红,利用插槽,vue动态绑定类名
    代码:<template><el-table:data="tableData"style="width:100%"><el-table-columnprop="date"label="日期"width="150"></......
  • 来瞧瞧,WPF 炫酷走马灯!
    来瞧瞧,WPF炫酷走马灯!控件名:SpotLight作者:WPFDevelopersOrg原文链接:https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用大于等于.NET40;VisualS......
  • WPF实现一个简单自定义管道
    先看效果  xaml代码<UserControlx:Class="WPF控件测试.Control.Pipeline"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"......
  • JQuery事件绑定&入门函数&样式控制、JQuery_选择器_基本选择器
    JQuery事件绑定&入门函数&样式控制选择器:筛选具有相似的特征的元素(标签)基本语法学习:1事件的绑定2入口函数3样式控制window.on......
  • 《深入浅出WPF》MVVM视频教材中的实例练习
    前言在学习了《深入浅出WPF》的书籍以及视频之后,将最后的MVVM练习项目从头到尾敲了一遍,以加深自己的理解,也是为了提高自己对基础知识的熟练程度。由于是自己对着示例图自......
  • vue数据数据双向绑定
    数据双向绑定主要涉及以下内容v-model,number和v-model.lazy<!DOCTYPEhtml><htmllang="zh"><head> <metacharset="UTF-8"> <metahttp-equiv="X-UA-Compatible......
  • JQuery事件绑定
    JQuery事件绑定1.jquery标准的绑定方式jq对象.事件方法(回调函数)HTML代码<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>绑......
  • JQuery事件绑定
    事件绑定jquery标准的绑方式jq对象.事件方法(回调函数);<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title></title><scripttype="text/......
  • JQuery事件绑定
    事件绑定1.jquery标准的绑定方式jq对象.事件方法(回调函数);注:如果调用事件方法,不传递回调函数,则会触发浏览器默认行为。表单对象.submit();//让表单提交<......
  • JQuery事件绑定
    JQuery事件绑定标准方式JQuery对象.事件方法(回调函数);注:如果调用事件方法,不传递回调函数,则会触发浏览器默认行为。表单对象.submit();//让表单提交<!DOCTYPEht......