想要实现的东西


  • 在一个大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值一定是正确的。

 

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/blueben/p/13629167.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!