Построение приложений с лентой WPF, XAML и шаблоны данных, без усилий…
Сегодняшний WPF-проект Брайана Прендегаста (Bryan Prendergast) таков, что может вызвать отвращение к WPF, может заставить поднять брови, но дает совершенно уникальный взгляд на построение WPF-приложений. Если вы ищете, как «думать вне заданных рамок» о построении WPF-приложений…
"WPF Composites делает WPF настолько простым, что даже ребенок может справиться с ним . Представь строительные кубики ... "
WPF Composites – проект, посвященный альтернативному, сжатому подходу, основанному на C#, к управлению композициями элементов пользовательского интерфейса. Обычно композиции управляются с помощью WPF Databinding и DataTemplates, но эта библиотека использует ID и координаты X-Y вместо размещения элементов на экране. Сейчас это применимо только к синхронным приложениям или приложениям, вызывающим UI Thread при работе с композициями. Эта библиотека пока еще находится на альфа-стадии и работа над ней продолжается. Однако я приветствую добровольцев! Нет XAML. Не требуются шаблоны данных!
...
BEGIN COMPOSITE... END COMPOSITE
Ниже приведен пример создания композиции путем добавления нового элемента Rectangle ( с автоматическим присвоением значений) с последующим добавлением двух текстовых блоков под прямоугольником (все в колонке 0):
1
2
3
4
5
myDockPanel.BeginComposite(myGuid)
.AddAnything<Rectangle, DockPanel(0,0)
.AddText(1,0, "Hello World 1")
.AddText(2,0, "This is text at Row 2 Column 0 in the composite")
.EndComposite(new DockArgs(Dock.Left));
Затем вся композиция добавляется к myDockPanel в Dock.Left.
Обычно объекты полученные из базы данных SQL (или сохраненные в ней) имеют идентификатор записи, ассоциированный с ними, или GUID или базисный номер подлинности (1-...). Следовательно, композиция элементов UI на экране также легко может быть ассоциирована с таким же ID, как используемый в базе данных. Однако GUID не требуется (так как может автоматически создаваться за сценой).
Этот способ может быть эффективен для связывания и получения наборов композиций элементов UI (что может соответствовать свойствам внутри класса C#). Внутри одной композиции, привязанной к ID, для идентификации положения потомка внутри Grid в родительском контейнере используются координаты X-Y.
Примеры?
Я начал с работающего примера расширения элемента WPF ListBox в рамках подхода с кодом за сценой. Я использовал методы расширения потому, что не хотел, чтобы разработчики были обязаны реализовывать новый элемент управления.
Это простое начало выросло в ярмарку поддержки для 20 элементов управления IParent:
Примеры кода:
Хотите увидеть ещё?
Загляните в снимки экранов приложений на C# здесь: Demo App Screenshots
Библиотека не ограничивается C#. Примеры на IronPython можно найти здесь Iron Python Example
План оставшихся работ: To-Do List
Руководства и подробности: словари, просто как 1-2-3-4-5, селекторы
Эти снимки сделаны с разрешением 1280x1024. Демонстрационные приложения должны прекрасно масштабироваться до более высоких разрешений пока они поддерживают то же самое соотношение размеров (больший выбор можно сделать в терминах плана и относительного позиционирования в готовых приложениях).
Ключевым моментом этих снимков является тщательно проработанный по стилям и цветам элемент управления; … обратите внимание, сколько кусочков требуется показать разработчику для реализации стиля с помощью подхода «код за сценой без XAML».
Иными словами, мой выбор цветов может быть ужасным, мое конструирование страниц плоским и старомодным, но это лишь подчеркивает возможности подхода, сколько элементов вы можете изменить или переделать?
На первом экране я показываю элементы Grid, TabControl, ListBox, DockPanel, TreeView, DataGrid (с Composites), GroupBox, ComboBox, Dialog и множество элементов ScrollViewers.
...
Новый, совершенно отличный взгляд на построение WPF-приложений, он может привлекать в мире WinForm.
О, также вы получаете все исходные коды этого подхода!
https://wpfcomposites.codeplex.com/SourceControl/BrowseLatest