想要實作的東西
- 在一個大panel里面有倆個StackPanel,布局為垂直,上面的panel里面放入一個高度自動的TextBlock,下面則是一個高度自動的輸入文本框TextBox,垂直居中,
- 當下面文本框輸入文字時其高度自動變化,同時用回車鍵把這段文字賦值給上面的textblock,我呢希望上面的panel包裹著這里面的textblock一同向上移動,使得底部與下面的panel始終相切,
遇到的問題
- 要移動上面的panel可以通過動態修改其margin來改變其位置,而其margin里面的Top值 = 大panel.Height - 上panel.Height - 下panel.Height - 下panel.Margin.Bottom;
- 大panel與下panel都是xaml里面設定的,而上panel是在下panel的回車鍵事件創建的,所以當上panel高度為自動高度時,上面的margin計算中獲取到的上panel.Height值為NaN,也就無法得到上panel的margin的Top值,
解決方法
- 當一個控制元件高度設定為自動值時我們不能直接獲取它的高度值,可以考慮間接方法
- 例如這樣——上panel.Height = 大panel.Height - 上panel.margin.top - 上panel.margin.bottom;
- 盡管margin.top與margin.bottom值也許不對,但計算所得的height值一定是正確的,
一點猜想~
- 那些高度設為Auto的控制元件的高度數值可以在其SizeChange事件發生時獲取,這樣利用全域變數就可以獲取該控制元件的高度值
巨人的肩膀
- 想要使后臺用C#設定動態創建的控制元件高度為Auto可以這樣弄
- 控制元件名.Height = Double.NaN;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/246.html
標籤:Windows
上一篇:Remove-Variable in Windows command line
下一篇:pNFS相關;pNFS檔案系統
