使用Binding的RelativeSource

一个Binding有明确的数据来源 可以通过Source或ElementName赋值的方法让Binding与之关联

但是有的时候我们不能确定作为Source的对象叫什么名字,但知道它与作为Binding目标的对象在UI上有相对关系,比如:空间自己关联自己的某个数据、关联自己某级容器的数据

这个时候!我们就要使用Binding的RelativeSource属性了!

看个小例子

<Window x:Class="Wpf.Relative6312xaml"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:Wpf"mc:Ignorable="d"Title="Relative6312xaml" Height="200" Width="200"><Grid x:Name="g1" Background="LightPink" Margin="10"><DockPanel x:Name="d1" Background="LightBlue" Margin="10"><Grid x:Name="g2" Background="LightCoral" Margin="10"><DockPanel x:Name="d2" Background="LightGreen" Margin="10"><TextBox x:Name="textBox1" FontSize="24" Margin="10"></TextBox></DockPanel></Grid></DockPanel></Grid>
</Window>

效果图是这个样子的

把TextBox的Text属性关联到外层容器的Name属性上 在XAML中插入代码

<Window x:Class="Wpf.Relative6312xaml"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:Wpf"mc:Ignorable="d"Title="Relative6312xaml" Height="200" Width="200"><Grid x:Name="g1" Background="LightPink" Margin="10"><DockPanel x:Name="d1" Background="LightBlue" Margin="10"><Grid x:Name="g2" Background="LightCoral" Margin="10"><DockPanel x:Name="d2" Background="LightGreen" Margin="10"><TextBox x:Name="textBox1" FontSize="24" Margin="10"Text="{Binding RelativeSource= {RelativeSource FindAncestor, AncestorType={x:Type Grid},AncestorLevel=1}, Path=Name}"></TextBox></DockPanel></Grid></DockPanel></Grid>
</Window>

效果图

也可以在窗体的构造器中创建RelativeSource的对象再进行Binding

RelativeSource FindAncestor:寻找TextBox的祖宗元素

AncestorLevel = 1;向外层找1层

AncestorType = {x: Type Grid}:寻找的类型为Grid类型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/208305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter代码补全

有的时候属性不经常使用&#xff0c;就想不起来该用啥&#xff0c;只有点点印象&#xff1b;只能用代码补全功能&#xff0c;但我用了AS的默认操作发下并不好使&#xff0c;估计是快捷键冲突了。刚开始是不是下面的效果&#xff1a;这肯定不是我们想要的。 不怕&#xff0c;接下…

【S32DS报错】-2-提示Error while launching command:arm-none-eabi-gdb –version错误

目录 1 Error错误提示 2 Error错误原因 3 如何消除Error错误 结尾 【S32K3_MCAL从入门到精通】合集&#xff1a; S32K3_MCAL从入门到精通https://blog.csdn.net/qfmzhu/category_12519033.html 1 Error错误提示 使用S32DSJ-LinK下载程序&#xff0c;在Dedug Configurati…

计算机基础知识67--BBS

迁移表格 # 以后你写的每个python项目&#xff0c;都必须有一个txt文件叫 requirements.txt,里面放了当前项目所有的依赖&#xff0c;别人拿到项目---》需要执行 pip install -r requirements.txt # 装好该项目所有依赖 django3.2.20 # 模块 pillow mysqlclient # 主体项目功…

中东电商指南分享!盘点中东四大跨境电商平台

提到跨境电商新蓝海&#xff0c;就不得不想起土豪聚集地 ——中东&#xff0c;中东地区拥有庞大的人口、高人均GDP、强大的消费能力以及广泛普及的互联网&#xff0c;但外出购物却相对不便&#xff0c;正是这一特点为中东跨境电商市场创造了巨大的优势。随着中东地区电商的崛起…

mycat实现分表操作、isinstance的使用、sqlalchemy的使用、mysql数据库连接池

1 mycat实现分表操作 2 isinstance的使用 3 sqlalchemy的使用 4 mysql数据库连接池 1 mycat实现分表操作 在 MySQL 数据库中&#xff0c;Mycat 通常用于实现分片&#xff08;Sharding&#xff09;操作。分片是一种将大型数据库水平拆分成多个较小数据库的策略&#xff0c;以提…

Gan论文阅读笔记

GAN论文阅读笔记 2014年老论文了&#xff0c;主要记录一些重要的东西。论文链接如下&#xff1a; Generative Adversarial Nets (neurips.cc) 文章目录 GAN论文阅读笔记出发点创新点设计训练代码网络结构代码测试代码 出发点 Deep generative models have had less of an impac…

软件压力测试的重要性与用途

在当今数字化的时代&#xff0c;软件已经成为几乎所有行业不可或缺的一部分。随着软件应用规模的增加和用户数量的上升&#xff0c;软件的性能变得尤为关键。为了确保软件在面对高并发和大负载时仍然能够保持稳定性和可靠性&#xff0c;软件压力测试变得至关重要。下面是软件压…

提醒事项日历同步怎么设置?可实时同步日历的提醒事项工具

随着生活节奏的加快&#xff0c;我们每天都需要处理许多琐碎的事务。为了不忘记重要的事情&#xff0c;很多人选择使用提醒事项工具来帮助自己。然而&#xff0c;市场上的提醒事项工具五花八门&#xff0c;有些并不具备日历月视图功能&#xff0c;也无法与手机日历同步&#xf…

JavaScript 复杂的<三元运算符和比较操作>的组合--案例(一)

在逆向的时候,碰上有些复杂的js代码,逻辑弄得人有点混; 因此本帖用来记录一些棘手的代码,方便自己记忆,也让大家拓展认识~ ----前言 内容: function(e, t, n) {try {1 (e "{" e[0] ? JSON.parse(e) : JSON.parse(webInstace.shell(e))).Status || 200 e.Code…

Linux学习笔记7-IIC的应用和AP3216C

接下来进入其他两种串行通信方式&#xff1a;SPI和I2C的学习&#xff0c;因为以后的项目中会用到这些通信方式&#xff0c;而且正点原子的开发板里面也有用I2C和SPI通信的传感器来做实例&#xff0c;分别是一个距离传感器和六轴陀螺仪&#xff0c;这样就可以很好的通过实例来学…

GRE与顺丰圆通快递盒子

1. DNS污染 随想&#xff1a; 在输入一串网址后&#xff0c;会发生如下变化如果你在系统中配置了 Hosts 文件&#xff0c;那么电脑会先查询 Hosts 文件如果 Hosts 里面没有这个别名&#xff0c;就通过域名服务器查询域名服务器回应了&#xff0c;那么你的电脑就可以根据域名服…

第六届“强网”拟态防御国际精英挑战赛——入围战队篇

第六届“强网”拟态防御国际精英挑战赛即将于2023年12月6日在南京盛大开赛&#xff01;本届挑战赛再次为全球顶尖战队提供实战机会&#xff0c;向多类拟态防御设备系统发起挑战&#xff0c;在众测实战中持续检验中国制造内生安全数字产品所具有的中国力量。 本届挑战赛参赛战队…

【LeetCode:1466. 重新规划路线 | DFS + 图 + 树】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Vue 子路由页面发消息给主路由页面 ,实现主页面显示子页面的信息

需求 子页面进入后&#xff0c;能在主页面显示子页的相关信息&#xff0c;比如说主页面的菜单激活的是哪个子页面的菜单项 如上图&#xff0c;当刷新浏览器页面时&#xff0c;让菜单的激活项仍保持在【最近浏览】。 实现方式&#xff1a; 在子页面的create事件中增加&#xff…

Java File类详解(下)练习一

练习 第一题 需求&#xff1a;在当前模块下的aaa文件夹中创建一个a.txt文件 import java.io.File; import java.io.IOException;public class FileExer01 {public static void main(String[] args) throws IOException {File f1 new File("AllInOne\\aaa");f1.mk…

docker-compose脚本编写关键词详解

docker-compose脚本编写高频关键词&#xff08;一&#xff09; 此处关键词应该必须能灵活运用 关键词 解释 例子 version 定义使用的docker-compose文件版本。较新的版本支持更丰富的功能和选项。 version: 3.8 services 定义应用程序的各个服务及其配置。每个服务通常…

Vue:绘制图例

本文记录使用Vue框架绘制图例的代码片段。 可以嵌入到cesium视图中,也可以直接绘制到自己的原生系统中。 一、绘制图例Vue组件 <div v-for="(color, index) in colors" :key="index" class="legend-item"><div class="color-…

深度学习还可以从如下方面进行创新!!

文章目录 一、我认为可以从如下5个方向进行创新总结 一、我认为可以从如下5个方向进行创新 新的模型结构&#xff1a;尽管现在的深度学习模型已经非常强大&#xff0c;但是还有很多未被探索的模型结构。探索新的模型结构可以带来更好的性能和更低的计算成本。 新的优化算法&a…

JavaScript数组面试题

JavaScript数组面试题 创建一个包含多个元素的数组&#xff0c;并打印输出数组的内容。 const array ["apple", "banana", "orange"]; console.log(array);如何访问数组中的特定元素&#xff1f; const array ["apple", "banan…

JS判断数组中是否包含某个值

方法一&#xff1a;array.indexOf 此方法判断数组中是否存在某个值&#xff0c;如果存在&#xff0c;则返回数组元素的下标&#xff0c;否则返回-1。 var arr[1,2,3,4]; var indexarr.indexOf(3); console.log(index);方法二&#xff1a;array.includes(searcElement[,fromIn…