如何使用app.config在运行时创建控件?

时间:2009-11-02 11:06:33

标签: wpf-controls app-config

我想在运行时创建简单对象(文本框,标签等),并将它们添加到我的WPF应用程序中的Grid中。我的问题是我需要在app.config文件中定义它们。我正在使用“ConfigurationManager.GetSection”方法读取配置数据。下面显示的是定义两个文本框的XML示例。 Key值始终定义为Labels,因此以下定义了两个名为“ID:”和“Name:”的标签以及两个相关的TextBox

<HardwareControls>
    <add key="ID:" value="System.Windows.Controls.TextBox"/>
    <add key="Name:" value="System.Windows.Controls.TextBox"/>
</HardwareControls>

目前我使用以下代码创建一个TextBox对象,但需要对其进行修改,以便控件类型由配置数据定义而不是硬编码。任何人都可以根据我知道由字符串定义的控件类型来帮助我做这件事吗?

TextBox tb1 = new TextBox();
tb1.Width = 100;
tb1.SetValue(Grid.ColumnProperty, 1);
tb1.SetValue(Grid.RowProperty, i);

我还可以看到一种情况,我可能想要在配置文件中定义其他值,例如文本框宽度。是否有更好的解决方案将其存储在app.config中,因为它看起来像“GetSection”方法只支持键/值对(我可能在这个假设中很忙,因为我还没有读过太多关于此的内容)。

2 个答案:

答案 0 :(得分:1)

您可以使用Activator.CreateInstance

示例:

string typeName = "System.Windows.Controls.TextBox";
Type type = Type.GetType(typeName);
object control = Activator.CreateInstance(type); // control is your TextBox

答案 1 :(得分:0)

相关问题