【问题标题】:Change Margin programmatically以编程方式更改保证金
【发布时间】:2015-10-17 02:46:06
【问题描述】:

我想根据前一个stackpannel的高度来改变stackpannel的Margin,例如StackPannel1的高度是20,stackpannel2的Margin是0,stackpannel1的高度+ 5,0,0。如何解决我的问题?

【问题讨论】:

  • 已经试过了,但这不是我想要的:(
  • 好吧,那你想要什么?
  • 我希望 StackPanel2 的边距是 StackPanel1+5 的高度
  • 哪个边距?最佳?剩下?底部?正确的?全部?

标签: c# windows-8.1


【解决方案1】:

这应该可以完成工作:

stackpannel2.Margin = new Thickness(0, StackPannel1.ActualHeight + 5, 0, 0);

确保在适当的时间运行此代码(即当框架实际设置或更改ActualHeight 时),例如响应FrameworkElement.SizeChanged 事件。

【讨论】:

  • 它什么也不做,它保持在原来的位置。我认为它在代码中的正确位置,因为当我输入 0,200,0,0 时,它会做它应该做的事情
  • @szoszk 代码何时运行?也许StackPannel1.ActualHeight 是0,因为它还没有被布局。请使用您的调试器进行检查。
  • Activity初始化后,我去检查一下
  • 它没有说任何看起来像错误的东西。就是这样:Debuger log
  • @szoszk 我不是在谈论错误。当您在布局系统分配之前查询高度时,它的值只是 0。int height = StackPannel1.ActualHeight; 的值是多少?
【解决方案2】:

你必须刷新..解决方案stackpannel2.Margin = new Thickness(0, StackPannel1.ActualHeight + 5, 0, 0); 对我来说似乎不错

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 2019-04-10
    • 2015-08-16
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多