Динамически добавленные элементы управления не отображаются там, где ожидается - PullRequest
0 голосов
/ 29 марта 2012

У меня есть страница с сеткой.

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

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

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

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

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

Спасибо

Ответы [ 2 ]

1 голос
/ 29 марта 2012

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

0 голосов
/ 29 марта 2012

Для позиционирования элементов управления вы можете сделать это несколькими способами. Вы должны использовать элемент 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 и ТО затем установите Margin на x, y, 0, 0 . Пример кода:

<Grid>
    <Button x:Name="sampleButton" 
            HorizontalAlignment="Left" 
            VerticalAlignment="Top" 
            Width="30" Height="20" 
            Margin="30, 10, 0, 0"/>
</Grid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...