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;
相關文章
相關標籤/搜索