2009-12-15 3 views
0

Большинство сеток используют синтаксис, такой как MyGrid [row, col], чтобы запрограммировать конкретную ячейку.Как программно ссылаться на ячейку Silverlight DataGrid?

Как это сделать, скажем, в C#, для Silverlight DataGrid? Все примеры, которые я получил , видели до сих пор, используют только XAML.

Спасибо.

ответ

1

Если вы привязываете itemssource к наблюдаемому коллекционированию, вы можете получить строки и тома, изменив эту коллекцию. Ui автоматически инициирует изменение

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; 
      } 
     } 
Смежные вопросы