【发布时间】:2014-11-18 15:50:22
【问题描述】:
我有一个 wpf 应用程序,其中一个网格中有两个网格,像这样
<window ....>
<grid x:name="main_grid">
<grid x:name="panel1">
//...some stuff//
</grid>
<grid x:name="panel2">
//...some stuff//
</grid>
</grid>
</window>
main_grid 的位置适合整个窗口 我想将 Panel1 和 Panel2 的边距从后面的代码定位到 0。
我试过是这样的,
private void window_Loaded(object sender, RoutedEventArgs e)
{
int left = Convert.ToInt16(main_grid.Margin.Left);
int top = Convert.ToInt16(main_grid.Margin.Top);
panel1.margin = new Thickness(left, top, 0, 0);
panel2.margin = new Thickness(left, top, 0, 0);
}
但是,它不起作用。图... 有人有任何解决方案吗?请...
【问题讨论】:
-
这里有很多问题。首先,您为两个面板设置相同的边距,因此两者都将在彼此之上(假设面板具有相同的水平和垂直方向)。然后margin属性是错误的Thickness take (left,top,right,bottom);
-
为什么要在代码隐藏中这样做?最好将 UI 代码放在 UI (xaml) 中,只需使用设计器设计布局并手动修改以满足您的需要
-
这当然行不通。你在哪里定义了
o?还是应该为零?另请注意,Thickness中传递的 4 个参数的顺序是针对left, top, right, bottom。 -
很抱歉关于边距的错误。原来的代码没问题,我只是在这里犯了错误。 o 是 0。而且我需要将这两个面板放在一起,所以它不重要。无论如何,我的窗口设置为将其高度和宽度属性更改为 PrimaryScreenHeight 和宽度,所以我不知道用户将拥有的屏幕高度/宽度。这就是为什么我想在后面的代码中做到这一点,以便边距可以为 0