通过WPF中的代码隐藏创建具有不同视觉属性的同一控件的多个实例

时间:2012-02-28 18:58:05

标签: c# wpf wpf-controls code-behind

我正在尝试使用Expression Blend 4创建一个GUI原型并创建一个最小的WPF项目。

我有一个主窗口(XAML +代码隐藏),其中有8个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 个答案:

答案 0 :(得分:1)

如果您询问如何以编程方式添加项目:

//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;

答案 1 :(得分:1)

首先,你需要知道一些C#才能做到这一点。其次,您的控件可以显示映射到内部外观属性的属性,因此当用户更改它们时,您可以更改控件内的等效项。