Должен ли я использовать Expression Blend для разработки действительно динамических интерфейсов? - PullRequest
3 голосов
/ 10 ноября 2009

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

Я пытался быстро освоить WPF и создавал прототипы пользовательского интерфейса здесь и там, и недавно я решил посмотреть, смогу ли я использовать Expression Blend, чтобы помочь с дизайном этих пользовательских интерфейсов. И в этот момент я очень озадачен.

Мне кажется, что Expresssion Blend разработан с расчетом на то, что вы уже знаете все объекты, которые будут присутствовать в пользовательском интерфейсе во время разработки. Но наша программа генерирует эти объекты динамически во время выполнения.

Например, строка данных может быть представлена ​​в горизонтальной панели StackPanel, содержащей чередующиеся TextBlocks (для подписей) и TextBoxes (для полей данных). Количество этих объектов зависит от метаданных о количестве столбцов в строке данных. Я могу с готовностью написать код, который проходит через запись метаданных и динамически заполняет StackPanel, настраивая привязку всех элементов управления к свойствам данных или метаданных. (Ширина TextBox может быть связана с метаданными, а его текст связан с данными.)

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

Я могу написать код, который проходит через мою модель данных и испускает XAML для всех этих элементов управления, я полагаю, а затем копировать и вставлять его. Но я буду чувствовать себя по-настоящему глупо, если окажется, что в Expression Blend найдется способ сделать что-то подобное, и я отступил и наказал, потому что я слишком смелый, чтобы придумать правильный способ думать об этом.

Достаточно ли этой информации, чтобы кто-то попытался сформулировать ответ?

1 Ответ

3 голосов
/ 10 ноября 2009

Я думаю, что выражение blend - это очень хороший выбор, ОСОБЕННО, если вы хотите создавать динамические пользовательские интерфейсы, основанные на данных. Вы можете использовать Blend для описания шаблонов данных, которые определяют, как один объект данных должен быть представлен на экране. Например, если у вас есть объект типа Person, вы можете определить элементы управления, такие как текстовые поля, границы и т. Д., Которые затем должны генерироваться автоматически для каждого человека в вашем списке. Затем вы можете заполнить элементы ItemsControls (DataGrid, ListView, TreeView ...) этими динамическими объектами данных, и WPF знает, как их отобразить. Если Persopn удален из списка, сгенерированный визуальный элемент также будет удален. Это простой пример: понятие динамических данных глубоко внедрено в WPF, и вы можете получить доступ к этим функциям с помощью blend.

Чтобы иметь возможность создавать шаблоны данных в смеси выражений, вам необходимо предоставить примерные данные времени проектирования .

Кроме того, чтобы быть эффективным со всем этим, очень важно, если вы придерживаетесь MVVM дизайна.

...