【发布时间】:2023-03-22 12:19:01
【问题描述】:
我想创建一个可调整大小的窗口,它最初会自动调整到其内容。 如果窗口的大小达到某些限制,自动调整大小将被禁用,并且不断增长的控件将被剪切或显示为滚动条。 当用户调整窗口大小时,自动调整大小也必须关闭。
真正的任务是使用文本控件创建方便的可调整大小的对话框窗口。 当它包含的文本行不多且不少时,最初自动调整对话框大小是合理的。文本量增加,对话框变大。当然它必须有一些大小限制。
附:我认为定义布局是一项非常常见的任务,其中在布局的测量传递期间大小的指导作用有条件地从子级切换到父级并返回。
分享您的想法或现有解决方案。可能是我错过了一些东西。 谢谢。
更新 1
让我解释一下算法:
1) 显示窗口(假设所有数据/内容都已设置)。
2) 它的大小被调整为好像窗口的属性是:
最大高度 = ...
最大宽度 = ...
SizeToContent = "WidthAndHeight"
3) 用户尝试调整窗口大小。他可以做到。内部控件会相应地改变它们的大小。
这种行为等同于属性集:
MaxWidth= "{x:Ststic Double.PositiveInfinity}"
MaxHeight = "{x:Ststic Double.PositiveInfinity}"
SizeToContent = "手动"
ResizeMode = "CanResizeWithGrip"
【问题讨论】:
-
听起来好像您只需要为控件设置最小/最大尺寸,并在必要时包含可滚动面板。到目前为止,您尝试了哪些方法,您在哪些部分遇到了问题?
-
是的,但是您忘记了用户。我想让他手动无限制地调整窗口大小。设置 MaxHeight 和 MaxWidth 会终止此功能。
-
MaxHeight和MaxWidth单个控件,而不是窗口。 -
在这种情况下,控件将不可拉伸。考虑具有唯一文本框的窗口。文本框首先确定窗口的大小,但有一些限制。然后在调整窗口大小时拉伸。换句话说,您的解决方案仅适用于初始大小。如果不允许用户调整窗口大小也没关系。