2016-10-06 3 views
0

Я хотел бы добавить Grid на холсте и поместить внутри Rectangle.Как добавить Controls.Grid в холст

Вот мой код

 Grid gridForModules = new Grid();  
     Canvas.SetLeft(gridForModules, 600); 
     Canvas.SetTop(gridForModules, 80); 
     AddRowsOfGrid(gridForModules, 5); 
     AddColumnsOfGrid(gridForModules, 8); 
     gridForModules.ShowGridLines = true; 
     m_grid.RegisterName("ModulesGRID", gridForModules); 
     m_canvas.Children.Add(gridForModules); 


     Rectangle rect = new Rectangle(); 
     Grid.SetColumn(rect, 2); 
     Grid.SetRow(rect, 2); 
     Grid.SetRowSpan(rect, 2); 
     Grid.SetColumnSpan(rect, 2); 
     rect.Fill = new SolidColorBrush(Colors.Coral); 
     rect.Name = "ModuloEsempio"; 
     gridForModules.Children.Add(rect); 
     m_grid.RegisterName(rect.Name, rect); 

Благодаря

+0

Что именно не работает, когда вы используете свой код? – haindl

+0

Я не вижу линий сетки, и я не вижу прямоугольника. – fede186

+0

Ваш код, кажется, отлично работает в моих тестах. Установили ли вы 'Height' своих RowDefinitions в' AddRowsOfGrid' и 'Width' ваших ColumnDefinitions в' AddColumnsOfGrid'? Если да, можете ли вы опубликовать код этого метода? (Помните, что ваша сетка немного правее из-за 'SetLeft'' 600'.) – haindl

ответ

1

Вы указываете, что столбцы/строки Энергосистемы должны быть одинаково широкий/высокий, установив new GridLength(1.0, GridUnitType.Star) на обоих. Так что, если у вас есть 5 строк, то высота каждой строки должна быть высотой сетки, деленной на 5.

Проблема в вашем коде заключается в том, что сетка не имеет высоты или ширины, потому что холст - это просто которая не меняет его содержание.

Чтобы решить проблему, то вы должны либо установить размер на сетке с помощью

gridForModules.Width = 300; 
gridForModules.Height = 200; 

или вы должны установить его в колонке/RowDefinitions

col.Width = new GridLength(30); 
row.Height = new GridLength(30); 

После этого вы должны увидеть Grid и ваш Rectangle (если вы посмотрите немного правее).

+0

теперь работает спасибо – fede186

+0

Добро пожаловать. :-) – haindl

Смежные вопросы