当前位置:网站首页>【wpf】深度解析,Bingding是如何寻找数据源的 上篇
【wpf】深度解析,Bingding是如何寻找数据源的 上篇
2022-08-06 19:38:00 【code bean】
数据源存放位置
目前我用存放数据源的属性有:
- Resources
- ItemsSource
- DataContext
一般控件都有Resources和DataContext属性,列表控件会多一个ItemsSource。
Resources可以放多个资源,但是需要给每一个资源指定一个key。
<Page.Resources>
<local:TestMode2 x:Key="TM2"/>
<local:TestMode x:Key="TM1"/>
</Page.Resources>
而 ItemsSource和DataContext只能放一个对象(不需要指定key)
<Page.DataContext>
<local:TestMode2/>
</Page.DataContext>
Bingding 表达式
Bingding 表达式 有一些常用的方法:
- Source
- RelativeSource
- Path
Path 相当于是一个过滤器,用来选择具体是哪一个属性。
Source 是指定资源的位置,Source 指定的资源是去Resources中找,寻找资源时直接指定key,就能一步到位。
<TextBlock Text="{Binding Source={StaticResource TM2 }, Path=TestDate }"/>但如果,我们在绑定表达式中,不写Source 指定资源时,绑定表达式就会自动到ItemsSource和DataContext 中去找。
<TextBlock Text="{Binding Path=Value}"/>而且,默认的寻找方式是一层层的往上找,如果在某一层找到ItemsSource或DataContext 被设置过,不管Path指定的属性是否存在,就会停止继续往上找。
那么是否改变这种默认的查找方式呢?答案是使用RelativeSource 。
你会发现 RelativeSource 和 Source 有着本质的区别, 它并不是指定源的位置而是用于改变默认的寻找资料的方式。(因为RelativeSource 要找的位置并不是具体多个对象的Resources,而是只有个一个对象的ItemsSource或DataContext)
<TextBlock Text="{Binding Path=DataContext.DM1.Value,
RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Page}}"/>感悟
在使用数据绑定时,我们更喜欢,使用不指定Source 的方式,此时会自动去ItemsSource或DataContext 中寻找,这种方式更加的灵活。
下一篇,我将介绍 RelativeSource 是如何改变默认的寻找资源的方式。并显示实际的例子,敬请期待。
边栏推荐
- 63:第五章:开发admin管理服务:16:开发【删除友情链接,接口】;(核心是:理解MongoDB,删除数据的逻辑)
- 得不到你的心,就用“分布式锁”锁住你的人
- The correct way to open ESLint plugin rule writing
- ceph主要组件介绍
- [C language] Comprehensively analyze the structure, organize the knowledge points of the structure
- Day12:AVL树--平衡二叉树
- Stream streams are grouped by multiple fields
- PHP two-dimensional array to heavy
- R语言dplyr包summarise_at函数计算dataframe数据中多个数据列(通过向量指定)的方差
- 一分钟带您了解PCBA加工流程与优势!
猜你喜欢
随机推荐
The correct way to open ESLint plugin rule writing
R语言拟合ARIMA模型:剔除ARIMA模型中不显著的系数、通过分析系数的置信区间判断系数是否是冗余系数(参数)、以及是否需要被删除
jenkins pipeline 读取json file
【Scientific Reports】《多中心影像诊断的联邦学习:心血管疾病的模拟研究》
JDY-16 蓝牙4.2模块串口测试方法
MySQL中索引的基本知识
R语言使用oneway.test函数执行单因素方差分析(One-Way ANOVA)、使用aov函数执行单因素方差分析(aov函数默认组间方差相同)
Hudi(1.0、2.0)简介
OpenCV - 图像保留纹理去噪 fastNlMeansDenoising
这个数据太骚!搞得我都激动了。
如何运营独立站?
8.camera调试日志
Stream流按照多字段分组
Day12:AVL树--平衡二叉树
R语言使用aov函数执行单因素方差分析、使用TukeyHSD函数分析单因素方差分析的结果并解读TukeyHSD函数的输出结果
go install 指定版本包
如何借助cpolar内网穿透连接本地树莓派(1)
Pytest学习-YAML
Node 中的 Events
ceph主要组件介绍








