C#Metro应用程序 - 将控件添加到网格中的特定行和列

时间:2014-07-08 12:34:25

标签: c# xaml grid controls

我想创建一些控件对象(Windows.UI.Xaml.Shapes.Rectangle为特定的)并以编程方式将其添加到设计器中创建的Grid控件中。我搜索了很多,但没有找到我需要的东西 - 很多答案都说SetRowSetColumn方法。问题是,显然,新XAML中不存在这些功能(编辑: Grid我所说的是名称空间Windows.UI.Xaml.Controls,而不是System.Windows.Controls 1}})..我尝试将控件作为子项添加到网格中:

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中的儿童控件吗?

很抱歉,如果这个问题很简单,我只是不知道,怎么做,我想要两天,所以我会非常感谢任何建议。

2 个答案:

答案 0 :(得分:2)

您必须使用两个静态方法才能执行此操作。 SetRowSetColumn。例如

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

答案 1 :(得分:0)

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