【问题标题】:Grid Margin from Code Behind来自代码背后的网格边距
【发布时间】: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

标签: c# wpf grid margin


【解决方案1】:

为什么不在 XAML 中这样:

<Grid x:name="main_grid"
      Margin="10,20,30,40">
    <Grid x:name="panel1"
          Margin="10,20,30,40">
    </Grid>
    <Grid x:name="panel2"
          Margin="10,20,30,40">
    </Grid>
</Grid>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    相关资源
    最近更新 更多