2012-03-28 3 views
0

У меня есть страница с сеткой.Динамически добавленные элементы управления не отображаются там, где это ожидалось

Основываясь на выборе ComboBox, я динамически добавляю соответствующий GridView, у которого есть ContextMenu (насколько это хорошо).

Один из параметров ContextMenuItem требует ввода пользователем, поэтому я динамически создаю и добавляю элементы управления в сетку и добавляю Grid как дочерний элемент Grid на странице (в то же время я скрываю первый дочерний элемент сетки (GridView)).

Элементы управления не отображаются в ожидаемых положениях. Если я укажу 0,0,0,0, они появятся где-то посередине. Если я укажу -800, -400, 0,0, они появятся рядом с тем местом, где я хочу, чтобы они были, но не там, где они ожидаются (сама сетка - 800x400).

Я что-то упустил?

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

Благодаря

ответ

1

Вы должны использовать Canvas если вы позиционируете управления точно. A Grid предназначен для позиционирования элементов управления относительно, в то время как похоже, что вы пытаетесь установить их абсолютно (в пределах Grid).

+0

Спасибо. Это сработало. – user1299040

0

Чтобы разместить элементы управления, вы можете сделать это несколькими способами. Вы должны использовать элемент Canvas вместо Grid и установить Left и Top свойствами элементов управления, которые вы хотите разместить. образца в XAML для кнопки в (30, 10) положение:

<Canvas> 
    <Button x:Name="sampleButton" 
      Width="30" Height="20" 
      Canvas.Left="30" 
      Canvas.Top="10"/> 
</Canvas> 

образец в коде позади:

... 
Canvas.SetLeft(sampleButton, 30); 
Canvas.SetTop(sampleButton, 10); 
... 

Если, однако, необходимо использовать Grid (по некоторым причинам), вы можете установить HorizontalAlignment в Left и VerticalAlignment в Top, указать соответствующие значения для Width и Height, а затем установить маржу на х, у, 0, 0. Образец кода:

<Grid> 
    <Button x:Name="sampleButton" 
      HorizontalAlignment="Left" 
      VerticalAlignment="Top" 
      Width="30" Height="20" 
      Margin="30, 10, 0, 0"/> 
</Grid> 
+0

Я использую HorizontalAlignment и VerticalAlignment, и это не помогло. Для меня нет причин не использовать Canvas. Кажется, это работает. – user1299040

+0

Он работает внутри ячейки «Grid», где определяется элемент управления. В моем примере есть «Grid» с одной строкой и одним столбцом, поэтому он работает так же, как и весь контейнер «Grid». Если вы определили некоторые строки и столбцы в '' Grid', вы должны это рассмотреть. –