当前位置: 首页 > news >正文

WPF RelativeSource属性-目标对象类型易错

上一篇转载了RelativeSource的三种用法,其中第二种用法较常见,这里记录一下项目中曾经发生错误的地方,以防自己哪天忘记了,又犯了同样错误—WPF RelativeSource属性-CSDN博客

先回顾一下:

控件关联其父级容器的属性——AncestorType

详细介绍下AncestorLevel,它指的是以Bingding目标控件为起点的层级偏移量,S1的偏移量是1,G2的偏移量是2,G1是偏移量3,AncestorType指的是要找的目标对象的类型。值得注意的是AncestorLevel必须参考AncestorType使用,如上面设置了AncestorType={x:Type Grid},则Bingding在寻找时会忽略非Grid的控件,此时G2的偏移量是1,G1的偏移量是2,StackPanel被忽略。

错误代码:

<TabControl><TabItemWidth="150"Height="30"Header="TabItem1"IsSelected="True"><ScrollViewer MaxHeight="{Binding ActualHeight, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=TabItem, AncestorLevel=1}}"><Grid><Grid.RowDefinitions><RowDefinition /></Grid.RowDefinitions><Grid Grid.Row="0"><TextBlockHorizontalAlignment="Center"VerticalAlignment="Center"FontSize="100"Text="用户控件" /></Grid></Grid></ScrollViewer></TabItem>
</TabControl>

Page界面显示效果:文字显示不全,只显示了高度为30的文字部分

问题出在这句话:<ScrollViewer MaxHeight="{Binding ActualHeight, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=TabItem, AncestorLevel=1}}">

AncestorType=TabItem,往上查找第一个TabItem控件,其Height="30",这样ScrollViewer的MaxHeight=30,直接造成显示不全

改前台代码AncestorType=TabControl,如下

<TabControl><TabItemWidth="150"Height="30"Header="TabItem1"IsSelected="True"><ScrollViewer MaxHeight="{Binding ActualHeight, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=TabControl, AncestorLevel=1}}"><Grid><Grid.RowDefinitions><RowDefinition /></Grid.RowDefinitions><Grid Grid.Row="0"><TextBlockHorizontalAlignment="Center"VerticalAlignment="Center"FontSize="100"Text="用户控件" /></Grid></Grid></ScrollViewer></TabItem>
</TabControl>

Page界面显示效果:文字显示完整,所以使用RelativeSource查找目标类型 AncestorType时,一定要仔细!

相关文章:

WPF RelativeSource属性-目标对象类型易错

上一篇转载了RelativeSource的三种用法&#xff0c;其中第二种用法较常见&#xff0c;这里记录一下项目中曾经发生错误的地方&#xff0c;以防自己哪天忘记了&#xff0c;又犯了同样错误—WPF RelativeSource属性-CSDN博客 先回顾一下&#xff1a; 控件关联其父级容器的属性—…...

Java while 和do while 循环

循环是程序中的重要流程结构之一。循环语句能够使程序代码重复执行&#xff0c;适用于需要重复一段代码直到满足特定条件为止的情况。 所有流行的编程语言中都有循环语句。Java 中采用的循环语句与C语言中的循环语句相似&#xff0c;主要有 while、do-while 和 for。 另外 Ja…...

应用软件安全编程--03净化传递给 Runtime.exec() 方法的非受信数据

每个 Java 应用都有一个 Runtime 类的实例&#xff0c; 一般需要使用 shell 时调用它&#xff0c;从而可以在 POSIX 中 使用/bin/sh 或者在Windows 平台中使用cmd.exe。 当参数中包含以空格、双引号或者其他以一/开头 的用来表示分支的字符时&#xff0c;就可能发生参数注入攻…...

uniapp阻止冒泡的方法,点击事件嵌套点击事件,怎么阻止同时触发

uniapp阻止冒泡的方法 当我们遇到点击事件嵌套点击事件的时候&#xff0c;点击里边的事件&#xff0c;外边的也会跟着触发该怎么办&#xff1f; 起初我尝试用了css里的修改z-index属性的方法&#xff0c;把里边的<view>标签放在上边&#xff0c;结果两个事件还是同时触发…...

【云原生基础】了解云原生,什么是云原生?

&#x1f4d1;前言 本文主要讲了云原生的基本概念和原则的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#x1f304;每日一句&#x…...

Android.bp探究

有时不知道Android.bp要咋写&#xff0c;特意看了下源码&#xff1a; ./build/soong/androidmk/androidmk/android.go 简单的Android.bp的模板是下面这个样子&#xff1a; [module type] {name: "[name value]",[property1 name]&#xff1a;"[property1 val…...

【LeetCode】415 字符串相加

415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 &#xff0c;计算它们的和并同样以字符串形式返回。 你不能使用任何內建的用于处理大整数的库&#xff08;比如 BigInteger&#xff09;&#xff0c; 也不能直接将输入的字符串转换为整数形式。 示例 1&#xff1a…...

【RP-RV1126】配置一套简单的板级配置

文章目录 官方配置新建一套新配置新建板级pro-liefyuan-rv1126.mk配置文件新建一个Buildroot的defconfigs文件 吐槽&#xff1a;RP-RV1126 的SDK奇怪的地方make ARCHarm xxx_defconfig 生成的.config文件位置不一样savedefconfig命令直接替换原配置文件坑爹的地方 Buildroot上增…...

解决uniapp的video标签和transition属性使用时出现错位的问题

template&#xff1a;三个视频都每个占满屏幕&#xff0c;点击按钮滚动最外层bgBox元素&#xff0c; style: 想要加上动画过渡效果&#xff1a; 这是显示第一个视频&#xff1a; 点按钮向上滑动滚动到第二个视频时&#xff1a; 视频错位了 &#xff0c;因为视频消失又出现的时候…...

电脑校园杂志电脑校园杂志社电脑校园编辑部2023年第9期目录

智慧校园 基于vue.js的“微校园”APP设计 吴秋伟 周慧 董锐 李仙云 余维 邓巧平 彭微1-3 探析AIGC对网络安全的革新&#xff1a;挑战与机遇共存 康良成 张朋4-6 文本信息自动摘要技术综述 滕宇飞7-9《电脑校园》投稿&#xff1a;cn7kantougao163.com 区块链应用于图书馆服务的策…...

NSSCTF做题第十页(1)

[GXYCTF 2019]禁止套娃 看源代码也没什么东西&#xff0c;扫一下看看 发现了git泄露 话不多说直接开整 下载下来了 flag.php 还是代码审计 <?php include "flag.php"; echo "flag在哪里呢&#xff1f;<br>"; if(isset($_GET[exp])){ if (!preg_…...

文件详细操作过程(C语言)

&#x1f31e;&#x1f31e;&#x1f31e;千淘万漉虽辛苦&#x1f31e;&#x1f31e;&#x1f31e; &#x1f31e;&#x1f31e;&#x1f31e;吹尽狂沙始到金&#x1f31e;&#x1f31e;&#x1f31e; &#x1f307;C语言文件操作 &#x1f34a;文件的定义&#x1f34b;什么是文…...

python使用ffmpeg来制作音频格式转换工具(优化版)

简介:一个使用python加上ffmpeg模块来进行音频格式转换的工具。 日志: 20231030:第一版,设置了简单的UI布局和配色,实现音频转为Mp3、AAC、wav、flac四种格式。可解析音频并显示信息,可设置转换后的保存路径 UI界面: 编程平台:visual studio code 编程语言:python 3…...

Debug技巧-不启用前端访问后端

在日常开发中&#xff0c;我们经常会遇到各种问题需要调试&#xff0c;前后端都启动需要耗费一定的时间和内存&#xff0c;方便起见&#xff0c;可以直接用抓包数据访问后端&#xff0c;这里我们需要用到Postman或者ApiFox 抓包数据 在系统前台触发后端请求&#xff0c;在控制…...

由CAB/PAB展开的一些思考

又到了一月保底一篇订阅号文章的时候&#xff0c;上周受到Oracle邀请&#xff0c;参加了在上海Oracle办公室举行的CAB&#xff08;The 13th Oracle China Customer Advisory Board Metting&#xff09;/ PAB&#xff08;The 3th Oracle China Partner Advisory Board Metting&…...

系列十五、idea全局配置

一、全局Maven配置 IDEA启动页面>Customize>All settings>Build,Execution,Deployment>Build Tools>Maven 二、全局编码配置 IDEA启动页面>Customize>All settings>Editor>File Encodings 三、全局激活DevTools配置 IDEA启动页面>Customize>A…...

高德Go生态建设与研发实践

序 高德在构建Go生态演化过程中&#xff0c;已经实现了QPS从0到峰值千万的飞跃&#xff0c;本篇文章主要介绍在此过程中积累的一些技术决策及性能优化和重构经验。阅读本文读者会有以下3点收获&#xff1a; 1.高德Go生态发展历程及现状分析 2.高德云原生Serverless落地情况&…...

SpringCloud中Turbine 1.X版本BUG

错误出现在spring-cloud-turbine-stream 包中&#xff0c;因为这个包会启动一个netty-port容器&#xff0c;并将它的server.port 设置为-1 &#xff0c;从而关闭了Servlet容器&#xff0c;这是官方包的一个Bug&#xff0c;不过Spring Boot 2.0已修复&#xff0c;要么升级包要么…...

SCSS的用法有哪些?分别举例

SCSS的用法主要有&#xff1a; 1&#xff1a; 变量&#xff1a;在SCSS中&#xff0c;我们可以通过 $ 符号来定义变量。比如&#xff0c;我们可以定义一个颜色变量 $color: red;&#xff0c;然后在我们需要使用这个颜色的时候&#xff0c;直接使用 $color 就可以了。 2&#x…...

Spring controller层请求数据和响应数据的简单方法

记录一些很基本的使用方法。 一、GET请求传参方法&#xff1a; 1.方法一&#xff1a;把参数传到&#xff1f;之后 使用注解RequestParam // 假如传值了current和limit /students?current1&limit20 RequestMapping(value "/students", method RequestMetho…...

Necesse 多人沙盒生存 RPG 服务器搭建教程

Necesse 多人沙盒生存 RPG 服务器搭建教程 Necesse 是一款融合了《泰拉瑞亚》式俯视角探索与《边缘世界》式基地管理的沙盒生存 RPG 游戏。当你和朋友想一起挖矿、打地牢、建造基地时&#xff0c;自建专用服务器能带来更稳定的连接、更低的延迟&#xff0c;以及完全由你掌控的…...

别再乱改注册表了!Windows系统文件夹移动后还原的完整避坑指南

Windows系统文件夹移动后还原的完整避坑指南1. 为什么你的文件夹移动操作会出问题&#xff1f;许多用户为了释放C盘空间&#xff0c;会选择将桌面、文档等系统文件夹移动到其他分区。这个看似简单的操作背后却隐藏着不少陷阱。最常见的错误是直接在目标盘符下选择移动&#xff…...

Autumn Valley资源包:开放世界性能优化实战指南

1. 这个资源包不是“拿来就能跑”的美术资产&#xff0c;而是为开放世界性能瓶颈量身定制的解决方案我第一次在Unity Asset Store看到Autumn Valley - Level这个包时&#xff0c;下意识点开预览图——金黄的枫林、雾气缭绕的山谷、蜿蜒的碎石小径&#xff0c;画面确实抓人。但真…...

AI赋能工程教育:构建个性化、多元化与伦理驱动的学习生态

1. 项目概述&#xff1a;当工程教育遇见AI&#xff0c;我们到底在谈论什么&#xff1f;最近几年&#xff0c;AI这个词快被说烂了。从ChatGPT的横空出世&#xff0c;到各类生成式AI工具的遍地开花&#xff0c;似乎每个行业都在讨论如何“被赋能”。工程教育这个领域也不例外&…...

C166链接器Error L101段冲突解决方案

1. 问题现象与背景解析当使用C166开发工具链进行项目链接时&#xff0c;开发者可能会遇到L166链接器报出的Error L101&#xff08;Section Combination Error&#xff09;。这个错误通常表现为链接过程中突然中断&#xff0c;并显示类似以下的错误信息&#xff1a;L166 LINKER …...

从线性智能到多维能力光谱:重新理解AI的“陌生性”与工程实践

1. 项目概述&#xff1a;重新审视智能的“陌生性”在人工智能领域&#xff0c;我们似乎总在追逐一个幽灵般的“通用智能”&#xff08;AGI&#xff09;——一个能在所有认知任务上媲美甚至超越人类的系统。这种想象往往基于一个根深蒂固的线性模型&#xff1a;智能是一个单一的…...

Claude API文档不是说明书,而是契约:用Swagger UI+Postman Collection+TypeScript SDK三件套构建零歧义协作协议

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Claude API文档不是说明书&#xff0c;而是契约 Claude API 文档的本质并非操作指南或功能速查手册&#xff0c;而是一份具有技术约束力的**双向契约**——它明确定义了客户端与 Anthropic 服务之间在请求结构…...

8个必备的数据采集工具详解,低代码爬虫~

网络爬虫是一种常见的数据采集技术&#xff0c;你可以从网页、 APP上抓取任何想要的公开数据&#xff0c;当然需要在合法前提下。 爬虫使用场景也很多&#xff0c;比如&#xff1a; 搜索引擎机器人爬行网站&#xff0c;分析其内容&#xff0c;然后对其进行排名&#xff0c;比…...

2026年阿里云OpenClaw/Hermes Agent配置Token Plan怎么安装看这

2026年阿里云OpenClaw/Hermes Agent配置Token Plan怎么安装看这。OpenClaw是开源的个人AI助手&#xff0c;Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流 AI 工具&…...

无授权不感知、无穿戴可溯源:无感定位重构公安新型治安底座

无授权不感知、无穿戴可溯源&#xff1a;无感定位重构公安新型治安底座镜像视界浙江科技有限公司依托国家十四五重点课题研究成果、镜像视界浙江普陀时空大数据应用技术联合研究院联合研发体系与河南省电检院权威认证资质&#xff0c;以自研空间计算技术为根基打磨无感定位体系…...