代码之家  ›  专栏  ›  技术社区  ›  Retrocoder

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

  •  0
  • Retrocoder  · 技术社区  · 15 年前

    我想在运行时创建简单的对象(文本框、标签等),并将它们添加到我的WPF应用程序的网格中。我的问题是我需要在app.config文件中定义这些。我正在使用__configurationmanager.getsection_方法读取配置数据。下面显示的是定义两个文本框的XML示例。键值总是定义为标签,因此下面定义了两个名为__id:_157;和_156;name:_157;的标签和两个相关的文本框。

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

    目前,我使用以下代码创建一个文本框对象,但需要修改它,以便控件类型由配置数据定义,而不是硬编码。有人能在我知道字符串定义的控件类型的基础上,帮助我做这个吗?

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

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

    2 回复  |  直到 15 年前
        1
  •  1
  •   bniwredyc    15 年前

    你可以使用 Activator.CreateInstance

    例子:

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