【发布时间】:2010-11-12 21:25:37
【问题描述】:
我在调整画布的父级(恰好是 ChildWindow)大小时遇到了一个奇怪的问题。
从高层次来看,这就是我在用户点击按钮时尝试做的事情:
- 通过将 RowDefinition 高度从 0 设置为更大的值来取消隐藏行。
- 调整画布大小,因为里面的所有东西都更高了。
- 调整画布父级(子窗口)的大小,因为画布更高。
第 1 步和第 2 步工作正常。问题出在第 3 步:当我逐步执行 F#/Silverlight 代码时,所有尺寸似乎都设置正确。问题是 ChildWindow 在屏幕上呈现为比实际应该高很多。
看看下面的例子:
member this.btnWhatever_Click(sender : obj) (args : RoutedEventArgs) =
let parentWindow = this.Parent :?> ChildWindow // get the canvas' parent, and cast it to a ChildWindow
// if the RowDefinition height is set to our standard, the hide it by setting it to 0
if this.aRowDefinition.Height.Value.Equals STANDARD_ROW_HEIGHT then
this.aRowDefinition.Height <- new GridLength(0.)
this.Height <- this.Height - HEDGE_ROW_HEIGHT
parentWindow.Height <- parentWindow.Height - STANDARD_ROW_HEIGHT
this.btnCreateOrRemoveHedge.Content <- "On"
// otherwise, unhide the RowDefinition by setting it to the standard height
else
this.aRowDefinition.Height <- new GridLength(STANDARD_ROW_HEIGHT)
this.Height <- this.Height + STANDARD_ROW_HEIGHT
parentWindow.Height <- parentWindow.Height + STANDARD_ROW_HEIGHT
this.btnWhatever.Content <- "Off"
()
在这种情况下,我的 STANDARD_ROW_HEIGHT 只有 23 像素,但在用户单击按钮后,标题栏下方的 ChildWindow 中会添加一个 92 像素的空白空间。更重要的是,当用户再次单击按钮(切换行可见性)时,行会消失,但窗口顶部的额外空间仍然存在。最初,这个空白空间并不存在。看这张图片:
任何想法/帮助将不胜感激。谢谢!
【问题讨论】:
标签: silverlight xaml silverlight-4.0 f#