Динамически генерируемый графический интерфейс - PullRequest
7 голосов
/ 20 января 2011

Я начинаю предварительный проект для приложения общего назначения, которое будет использоваться в моей организации.Программа должна быть как общей, так и специализированной одновременно.Он будет содержать виджеты, общие для всех рабочих процессов, и уникальные виджеты (или ограничения ввода) для отдельных рабочих процессов.Чтобы избежать 97 разных разовых предложений, мы планируем создать набор схем для каждого рабочего процесса.Во время выполнения пользователь выберет свою схему на сервере, и графический пользовательский интерфейс выдаст нужные виджеты для их рабочего процесса.

Это приложение на C #, которое будет работать в .Net и, возможно, в Mono.Это означает, что мы изучаем GTK #, в дополнение к XAML и MonoMac.

Мы рассмотрели написание XSLT для нашего целевого инструментария GUI.Например:

  • XSLT Glade для преобразования наших XSD в XML libglade.

  • XSLT XAML для преобразования наших XSD в XAML.

  • Общий формат XML для других наборов инструментов, которые не поддерживают декларативный синтаксис для графических интерфейсов.

  • Библиотека классов для непосредственного чтения XSD и созданияGUI.

Итак, мой вопрос, это уже существует?Есть ли какой-нибудь инструментарий рабочего процесса для GTK # и libglade или WPF и XAML.

Ответы [ 2 ]

1 голос
/ 20 января 2011

Посмотрите на System.Windows.DataTemplate , который может автоматически использоваться WPF (см. Свойство DataType). Я думаю, что вы можете извлечь все блоки пользовательского интерфейса, которые будут использоваться для создания пользовательского интерфейса, а затем реализовать ViewModels и соответствующие DataTemplates. И результат UI будет составной вид модели этих блоков.

0 голосов
/ 20 января 2011

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

Некоторые проблемы, с которыми я столкнулся при этом

Но я смог это сделать. Во всяком случае, я думаю, что WPF лучше. Но если вам нужна идея, я думаю, я просто дал вам. (Может быть, не самая лучшая идея)

Удачи

...