UWP控件高度設爲自動時獲取其高度
想要實現的東西佈局
- 在一個大panel裏面有倆個StackPanel,佈局爲垂直,上面的panel裏面放入一個高度自動的TextBlock,下面則是一個高度自動的輸入文本框TextBox,垂直居中。
- 當下面文本框輸入文字時其高度自動變化,同時用回車鍵把這段文字賦值給上面的textblock,我呢但願上面的panel包裹着這裏面的textblock一同向上移動,使得底部與下面的panel始終相切。
遇到的問題spa
- 要移動上面的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;
歡迎關注本站公眾號,獲取更多信息