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时,一定要仔细!

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

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

相关文章

内网穿透的应用-如何在Termux 中使用SFTP 文件传输并结合内网穿透实现远程传输

文章目录 1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 SFTP&#xff08;SSH File Transfer Protocol&#xff09;是一种基于SSH&#xff08;Secure Shell&#xff09;安全协议的文件传输协议。与FTP协议相比&#xff0c;SFTP使用了…

基于springboot实现原创歌曲分享平台系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现原创歌曲分享平台演示 摘要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理平台应运而生&am…

随想录一刷·数组part2

你好&#xff0c;我是安然无虞。 文章目录 1. 有序数组的平方2. 长度最小的最数组3. 螺旋数组II 1. 有序数组的平方 有序数组的平方 class Solution { public:vector<int> sortedSquares(vector<int>& nums) {int n nums.size();// 以0为分割线的话&#xff…

git push超过100MB大文件失败(remote: fatal: pack exceeds maximum allowed size)

push代码的时候&#xff0c;有时会出现如下问题 remote: fatal: pack exceeds maximum allowed size error: failed to push some refs to ‘git.n.xiaomi.com:fuzheng1/nl2sql.git’ 解决方案&#xff1a; 将本地 http.postBuffer 数值调整到GitHub服务对应的单次上传大小配置…

【蓝桥杯选拔赛真题44】python小蓝晨跑 青少年组蓝桥杯python 选拔赛STEMA比赛真题解析

目录 python小蓝晨跑 一、题目要求 1、编程实现 2、输入输出 二、算法分析

如何将PySpark应用到日常的数据科学工作?

Spark数据处理引擎是一个强大的分析工具&#xff0c;它可以将原始数据转化为有价值的洞察。PySpark是基于Python的API&#xff0c;封装了Spark的核心引擎。它简化了Spark的学习曲线&#xff0c;使得任何在Python数据生态系统中工作的人都能够轻松使用这个强大的工具。 《Python…

如何选择安全又可靠的文件数据同步软件?

数据实时同步价值体现在它能够确保数据在多个设备或系统之间实时更新和保持一致。这种技术可以应用于许多领域&#xff0c;如电子商务、社交媒体、金融服务等。在这些领域中&#xff0c;数据实时同步可以带来很多好处&#xff0c;如提高工作效率、减少数据不一致、提高用户体验…

XUbuntu22.04之simplenote支持的Markdown语法总结(一百九十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

前端出大事儿了

大家好&#xff0c;我是风筝 文章首发于 前端出大事儿了 最近这两天&#xff0c;在前端圈最火的图片莫过于下面这张了。 这是一段 React 代码&#xff0c;就算你完全没用过 React 也没关系&#xff0c;一眼看过去就能看到其中最敏感的一句代码&#xff0c;就是那句 SQL 。 咱…

微信小程序实现微信登录(Java后台)

这两天在自己的小项目中加入了微信小程序的很多功能&#xff0c;今天来说一下关于微信授权登录的部分。 需要的材料 1&#xff1a;一个可以测试的微信小程序 2&#xff1a;此微信小程序的APPID和APPscret 流程 微信用户对应一个小程序都有一个唯一的openid&#xff0c;微信…

Scala基本数据类型和运算符

1.数据类型 1.1 类型支持 Scala 拥有下表所示的数据类型&#xff0c;其中 Byte、Short、Int、Long 和 Char 类型统称为整数类型&#xff0c;整数类型加上 Float 和 Double 统称为数值类型。Scala 数值类型的取值范围和 Java 对应类型的取值范围相同。 数据类型 描述 Byte 8 …