Как создать элемент управления во время выполнения, используя app.config? - PullRequest
0 голосов
/ 02 ноября 2009

Я хотел бы создавать простые объекты во время выполнения (текстовое поле, метка и т. Д.) И добавлять их в Grid в моем приложении WPF. Моя проблема заключается в том, что мне нужно определить их в файле app.config. Я читаю в данных конфигурации, используя метод «ConfigurationManager.GetSection». Ниже показан пример XML, который определяет два текстовых поля. Значения ключа всегда определяются как метки, поэтому следующие определения определяют две метки с именами «ID:» и «Имя:» и два связанных текстовых поля

<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 ]

1 голос
/ 02 ноября 2009

Вы можете использовать Activator.CreateInstance

Пример:

string typeName = "System.Windows.Controls.TextBox";
Type type = Type.GetType(typeName);
object control = Activator.CreateInstance(type); // control is your TextBox
0 голосов
/ 02 ноября 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...