【问题标题】:Resetting a Stack Panel height to dynamic将堆栈面板高度重置为动态
【发布时间】:2019-03-14 20:15:36
【问题描述】:

如果没有设置高度,堆栈面板的高度会根据其内容动态变化。我的问题是:如果 c# 代码设置了高度,有没有办法(在 c# 中)清除这些值并返回堆栈面板以动态调整大小?像这样的...

spnTest.Height = 100; //expands height to 100, even if contents don't fill it
spnTest.HeightIsDynamic = true; //allows the height of spnTest to go back to being dynamic and expand/contract based on its contents

由于某种原因,将高度设置为 double.NaN 没有效果...

stkTest.Height = 117;
Console.WriteLine($"Height = {stkTest.Height}"); //writes "Height = 117"
stkTest.Height = double.NaN;
Console.WriteLine($"Height = {stkTest.Height}"); //writes "Height = 117"

.ClearValue(HeightProperty) 也不起作用

【问题讨论】:

  • 将其设置为 Double.NaN
  • 设置为 double.NaN 不起作用。我会发布更多代码
  • 是否有 MinHeight 或样式可能会覆盖它?
  • 您是否尝试过使控件无效?

标签: c# wpf stackpanel


【解决方案1】:

StackPanel 最初通过使用其中包含的子元素的大小来测量所需的元素大小。此初始测量值应存储在 DesiredSize 中。我会尝试使用存储在那里的高度来获取元素的原始测量值。查看 MSDN 条目。

MSDN StackPanel

【讨论】:

  • 我处于堆栈面板中的某些内容根据情况折叠或可见的情况,并且我正在为整个堆栈面板的展开和折叠设置动画。一旦我为它设置了一次动画,就会设置高度,并且不再根据其内容调整大小。正如您所解释的,DesiredSize 保持在堆栈面板的第一个高度。
猜你喜欢
  • 1970-01-01
  • 2017-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
相关资源
最近更新 更多