UserControl Position - PullRequest
       0

UserControl Position

3 голосов
/ 15 ноября 2011

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

        var MyCard = new vCard();
        MainGrid.Children.Add(MyCard);
        Grid.SetColumn(MyCard, 1);
        Grid.SetRow(MyCard, 0);

Но мне нужно расположить все по порядку, так как я могу установить положение X & Y для каждого. Я попытался создать метод в моем usercontrol для установки свойства margin, например:

    public void SetX(double X)
    {
        double  Y =this.Margin.Top;            
        this.Margin = new Thickness(X, Y, 0, 0);            
    }

Но это не работает. Есть ли другой способ сделать это?

Ответы [ 3 ]

4 голосов
/ 15 ноября 2011

Когда вы добавляете свой элемент управления в контейнер Grid, вы должны установить его положение, установив Column и Row.

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

3 голосов
/ 15 ноября 2011

Элементом управления, которым часто пренебрегают, является UniformGrid .

<UniformGrid Name="MainGrid" Rows="3" Columns="2"/>

Продолжите добавлять UserControl, как вы были раньше.

var MyCard = new vCard();
MainGrid.Children.Add(MyCard);

Это обеспечит хороший и равномерно распределенный контейнер для ваших предметов. Если вы хотите настроить интервал между элементами, есть несколько способов сделать это, самым простым из которых является настройка свойства Margin на самом UserControl.

<UserControl Margin="8" ... />
1 голос
/ 15 ноября 2011

Я бы сделал ObservableCollection объектов и поместил бы их в панель стека. Таким образом, вы можете добавить / удалить / заказать пользовательские элементы управления. Тогда вы можете просто установить размер внутри стеков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...