如何以编程方式引用Silverlight DataGrid单元格?

时间:2009-12-15 16:24:36

标签: silverlight datagrid

大多数网格使用MyGrid [row,col]等语法以编程方式引用特定单元格。

对于Silverlight DataGrid,如何在C#中完成此操作?我所有的例子 到目前为止看到只使用XAML。

感谢。

2 个答案:

答案 0 :(得分:1)

如果将itemssource绑定到observablecollection,则可以通过修改该集合来获取行和卷。 ui自动传播更改

答案 1 :(得分:1)

首先,您可以使用简单的网格。并通过使用Grid.SetColumn和Grid.SetRow方法引用任何网格单元。

查看链接: http://msdn.microsoft.com/en-us/library/system.windows.controls.grid.setcolumn.aspx http://msdn.microsoft.com/en-us/library/system.windows.controls.grid.setrow.aspx

简短快速的例子:

XAML:

<Grid Height="Auto" Name="Mygrid" Width="Auto" />

C#:

string[] _names = new string[] { "first", "second", "three" };

        Mygrid.ShowGridLines = true;

        Mygrid.RowDefinitions.Clear();
        Mygrid.ColumnDefinitions.Clear();

        int rows = 3;
        int cols = 3;
        for (int r = 0; r < rows; r++)
            Mygrid.RowDefinitions.Add(new RowDefinition());
        for (int c = 0; c < cols; c++)
            Mygrid.ColumnDefinitions.Add(new ColumnDefinition());

        for (int c = 0; c < Mygrid.ColumnDefinitions.Count; c++)
        {
            int rowIndex = 0;
            foreach (string s in _names)
            {
                var someControll = new TextBox();
                someControll.Text = string.Format("{0} row in {1} column", s,c);
                someControll.Height = 25;

                Mygrid.Children.Add(someControll);

                Grid.SetRow(someControll, rowIndex);
                Grid.SetColumn(someControll, c);

                rowIndex += 1;
            }
        }