当前位置:  开发笔记 > 编程语言 > 正文

强制自定义WPF控件正确调整大小

如何解决《强制自定义WPF控件正确调整大小》经验,为你挑选了1个好方法。

我编写了一个WPF用户控件,其中一部分涉及动态地向画布添加元素,这会影响所述画布的高度.画布嵌套在网格中.当我动态添加我的元素时,画布的高度会发生变化,但画布最终会延伸到整个控件的边缘之外,而不是使控件调整大小并使其自身更高.如何强制控件正确调整大小?我得到的感觉是我需要调用或覆盖Measure或Arrange但是我对这两种方法都没有运气 - 可能是因为我用不正确的参数调用它们,或者可能因为它们不是正确的调用方法.



1> Josh G..:

您的问题是Canvas面板不会调整大小以适应其内容.

你提到了测量和安排.你熟悉WPF的两遍布局系统吗?阅读本文以获取更多信息:WPF的布局系统.

本文还介绍了不同面板的布局.每种类型的面板都不同.

在WPF中,元素首先有机会确定它们的大小.小组可以根据孩子的大小确定他们的大小,或者他们可以询问固定的大小,无论他们的孩子的大小.画布是后者的一个例子.

接下来告诉他们将会有多大的元素,并要求他们安排自己和孩子.

Grid面板类型不仅允许行和列,而且还非常擅长自动调整内容大小.

StackPanel类型根本不在其定向的维度中自动调整大小,但它将在另一个维度中自动调整大小.

Canvas可以自动调整大小以填充空间,但它永远不允许其子项自动调整大小.它在指定的坐标处绘制孩子,并不关心它们有多大.

我建议尝试只有一行/列的网格.

或者您可以创建一个具有更好自动调整功能的新Canvas类.在测量期间,您需要相应地测量子元素和Canvas的大小.你可能会发现这样的课程很有帮助.

这是一篇关于WPF中的自动布局的文章.

如果您想创建一个自定义面板,这里有一个子主题:自定义面板元素.

编辑:还有一件事:您还可以将子元素的宽度/高度绑定到画布上的ActualWidth和ActualHeight属性,以便子项将调整其父项的大小.如有必要,您可以使用转换器设置尺寸比率.

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有