【问题标题】:C# Metro app - adding controls to specific row and column in gridC# Metro 应用程序 - 向网格中的特定行和列添加控件
【发布时间】:2014-08-29 04:47:39
【问题描述】:

我想创建一些控件对象(具体来说是Windows.UI.Xaml.Shapes.Rectangle)并以编程方式将其添加到在设计器中创建的Grid 控件中。我搜索了很多,但没有找到我需要的东西 - 许多答案都提到了 SetRow 和 SetColumn 方法。问题在于,显然,这些函数在新 XAML 中不存在(edit: Grid 我说的是在命名空间 Windows.UI.Xaml.Controls 中,而不是在 System.Windows.Controls 中)。我尝试将控件作为子项添加到网格:

grid.Children.Add(Rectangle);

控件添加在Grid的第一行/第一列单元格的中心,这很合乎逻辑,但是如何将下一个Rectangle添加到第一行即第二列?

这是一些实际的代码:

public void Draw(ref Grid grid)
{
    Color rectColor = new Color()
    {
        R = 90,
        G = 90,
        B = 90,
        A = 255
    };

    Brush rectBrush = new SolidColorBrush()
    {
        Color = rectColor
    };

    Square = new Rectangle()
    {
        Fill = rectBrush,
        Height = 40,
        Width = 40
    };

    grid.Children.Add(Square);
}

上述方法当然是更大程序的一部分,但是当我最终设法将一个控件放入由行和单元格编号描述的一个单元格中时,我想其余部分的制作起来会很简单(我需要 15x15 板)。

最后一件事 - 正如我所注意到的,所有这些 Grids 和其他布局控件似乎都不能用作表格,所以我的方法可能完全错误。当控件直接添加到设计器中时,它会自动适应正确的行和列。那么,我应该以某种方式只在Grid 中安排子控件吗?

对不起,如果这个问题很琐碎,我只是不知道该怎么做,我正在尝试两天,所以我将非常感谢任何建议。

【问题讨论】:

  • 你试过grid.SetRow和grid.SetColumn吗?
  • 是的,我在帖子中提到过,只是没有这样的方法。我会更新一点,因为不同的是命名空间,我之前忘记写了。

标签: c# xaml grid controls


【解决方案1】:

您必须使用两个静态 方法来执行此操作。 SetRow 和 SetColumn。例如

System.UI.Xaml.Controls.Grid.SetRow(your row num, your control)

据此他们应该在那里:

http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.grid.setrow.aspx

【讨论】:

  • 它们是,但它只适用于 Windows 桌面,在 Windows Store 应用程序的情况下,它似乎完全不同 - Grid 不等于 Grid,我只是喜欢它。
【解决方案2】:

你必须使用 grid.SetColumn(UIElement, int) 和 Grid.SetRow(UIElement, int)

【讨论】:

  • 我认为新 C# 中没有这样的方法,我写过这个(区别在于命名空间,Grid 你说的是在命名空间System.Windows.Controls,我问的那个位于Windows.UI.Xaml.Controls)。拥有它们真是太好了,但不幸的是它并不那么简单:(
  • 你是对的。您正在尝试使用两个不同的框架,没有共性。您必须实现自己的 Rectangle UIElement 才能使用 Grid 方法。
  • 好的,我会读到这个。看起来很奇怪,我们可以从设计器向给定的行和列添加控件,但是考虑到 XAML 控件几乎可以从 C# 编辑,没有简单的方法可以从代码中做到这一点。感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-08
  • 1970-01-01
  • 1970-01-01
  • 2012-01-27
  • 1970-01-01
  • 2012-09-28
相关资源
最近更新 更多