Создайте несколько экземпляров одного и того же элемента управления с различными визуальными свойствами с помощью кода в WPF - PullRequest
0 голосов
/ 28 февраля 2012

Я пытаюсь создать прототип графического интерфейса и создал минимальный проект WPF, используя Expression Blend 4.

У меня есть главное окно (XAML + codebehind) с восемью экземплярами UserControl, который определяется отдельно (XAML+ отделенный код).Этот пользовательский элемент управления имеет несколько контейнеров и форм, и я хотел бы, чтобы каждый его экземпляр в главном окне имел различный внешний вид.

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

first = new mycontrol;
mainwindow.maincontanier.add(first);
first.leftpanel.width = 100;
first.rightpanel.background = Gray;

second = new mycontrol;
mainwindow.maincontainer.add(second);
second.leftpanel.smalldot.stroke = Red;
second.leftpanel.insideborder.thickness = 2;

etc.

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

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

Ответы [ 2 ]

1 голос
/ 28 февраля 2012

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

1 голос
/ 28 февраля 2012

Если вы спрашиваете, как добавлять предметы программно:

//get mainwindow
Window main = App.Current.MainWindow;
myControl c1 = new myControl();
//change properties
myControl c2 = new myControl();
//change properties

//choose a container you want
StackPanel s = new StackPanel();

//add objects to container
s.Children.Add(c1);
s.Children.Add(c2);

//make container as your main content
main.Content = s;
...