|
|
11 ماه پیش | |
|---|---|---|
| .. | ||
| Definitions | 11 ماه پیش | |
| Samples | 11 ماه پیش | |
| readme.md | 11 ماه پیش | |
| ui-layout-avalonia-controls.xsd | 11 ماه پیش | |
| ui-layout-basic-controls.xsd | 11 ماه پیش | |
| ui-layout-def.xsd | 11 ماه پیش | |
| ui-layout-patterns.xsd | 11 ماه پیش | |
| ui-layout-validation.xsd | 11 ماه پیش | |
| ui-layout-views.xsd | 11 ماه پیش | |
| ui-layout-winforms-controls.xsd | 11 ماه پیش | |
Version: 1.2
Documentation Version: 1.2
Author: Dalibor Votruba
URL: quadarax.com/ui-layout-def
A comprehensive XML-based format for describing user interface layouts with inheritance, pattern definitions, view organization, external includes, platform-specific extensions, data binding, and accessibility support. This format enables cross-platform UI generation with strict validation and modular component libraries.
The UI Layout Definition Format provides a standardized way to define user interfaces that can be translated to various platforms (Windows Forms, WPF, Avalonia, Qt, Web, Mobile). It emphasizes:
Enhanced Data Binding Support
Comprehensive Accessibility Features
Window Includes Support
Enhanced Schema Validation
Expanded Platform Support
Advanced Business View Features
Enhanced Control Library
Views represent logical business functions (ProductView, OrderView) that group related windows and define shared data context and behaviors.
All controls and structures must be defined in the <patterns> section before use in windows.
Modular design allows splitting definitions across multiple files:
Wireframes use slots as placeholders that windows can fill with specific content.
Comprehensive validation rules ensure UI consistency and platform compliance.
<?xml version="1.0" encoding="UTF-8"?>
<ui-layout-def xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="ui-layout-definition"
xsi:schemaLocation="ui-layout-definition ui-layout-def.xsd"
version="1.2"
schema-version="1.2"
target-platform="basic|winforms|avalonia|kde|web|mobile"
accessibility-compliance="none|basic|wcag-a|wcag-aa|wcag-aaa">
<!-- Optional: Validation rules with external includes -->
<validation-rules>
<validation-include src="..." important="true/false" min-version="1.0" max-version="2.0" />
<rule name="...">...</rule>
</validation-rules>
<!-- Required: Pattern definitions with external includes -->
<patterns>
<pattern-include src="..." important="true/false" platform="basic|winforms|avalonia" min-version="1.0" max-version="2.0" />
<control name="..." type="..." category="..." inherits="...">...</control>
<structure name="..." type="..." category="..." inherits="...">...</structure>
<wireframe name="..." type="...">...</wireframe>
</patterns>
<!-- View definitions with external includes -->
<views>
<view-include src="..." important="true/false" min-version="1.0" max-version="2.0" />
<view name="..." type="..." category="..." inherits="...">...</view>
</views>
<!-- Window includes -->
<window-includes>
<window-include src="..." important="true/false" platform="..." min-version="1.0" max-version="2.0" />
</window-includes>
<!-- Window definitions (can be in external files) -->
<window name="..." title="..." wireframe="..." view="..." target-platform="..." schema-version="1.2">
<!-- Data binding configuration -->
<data-binding>
<data-context source="..." type="..." mode="TwoWay" />
<view-model class="..." assembly="..." namespace="..." />
<binding-properties>
<property control="..." property="..." binding-path="..." mode="..." validation-rule="..." converter="..." />
</binding-properties>
</data-binding>
<!-- Accessibility configuration -->
<accessibility compliance-level="wcag-aa">
<screen-reader window-title="..." description="..." landmark-role="..." />
<keyboard-navigation tab-order-start="1" focus-trap="false" escape-closes="true" />
<color-contrast high-contrast-support="true" minimum-ratio="4.5" />
</accessibility>
<!-- Window content -->
<slot-overrides>
<!-- Slot content with enhanced controls -->
</slot-overrides>
</window>
</ui-layout-def>
All controls now support comprehensive data binding:
<control name="EnhancedTextBox" type="input" category="basic" inherits="TextBox">
<attributes>
<!-- Data Binding Support -->
<attribute name="data-context" type="string" default="" />
<attribute name="binding-path" type="string" default="" />
<attribute name="command-binding" type="string" default="" />
<attribute name="validation-rule" type="string" default="" />
<attribute name="converter" type="string" default="" />
<attribute name="binding-mode" type="enum" values="OneWay,TwoWay,OneTime,OneWayToSource" default="TwoWay" />
<!-- Enhanced input features -->
<attribute name="input-type" type="enum" values="text,email,url,tel,number,search" default="text" />
<attribute name="auto-complete" type="enum" values="off,on,name,email,username" default="off" />
<attribute name="validation-pattern" type="string" default="" />
<attribute name="required" type="bool" default="false" />
</attributes>
<behavior>
<event name="validation-error" />
<event name="validation-success" />
</behavior>
</control>
<window name="ProductEditDialog" title="Edit Product">
<data-binding>
<data-context source="ProductEditViewModel" type="ViewModels.ProductEditViewModel" mode="TwoWay" />
<view-model class="ProductEditViewModel" assembly="MyApp.ViewModels" namespace="MyApp.ViewModels" />
<binding-properties>
<property control="nameTextBox" property="text" binding-path="Product.Name" mode="TwoWay" validation-rule="RequiredValidator" />
<property control="priceTextBox" property="text" binding-path="Product.Price" mode="TwoWay" converter="CurrencyConverter" />
<property control="saveButton" property="enabled" binding-path="CanSave" mode="OneWay" />
</binding-properties>
</data-binding>
</window>
<control name="AccessibleButton" type="action" category="basic" inherits="Button">
<attributes>
<!-- Accessibility Support -->
<attribute name="aria-label" type="string" default="" />
<attribute name="aria-description" type="string" default="" />
<attribute name="aria-role" type="string" default="" />
<attribute name="tab-index" type="int" default="0" />
<attribute name="access-key" type="string" default="" />
<attribute name="high-contrast-support" type="bool" default="true" />
<attribute name="screen-reader-text" type="string" default="" />
</attributes>
</control>
<window name="MainWindow" title="Application">
<accessibility compliance-level="wcag-aa">
<screen-reader window-title="Main Application Window"
description="Primary interface for data management"
landmark-role="main" />
<keyboard-navigation tab-order-start="1" focus-trap="false" escape-closes="false" />
<color-contrast high-contrast-support="true" minimum-ratio="4.5" />
</accessibility>
</window>
Windows Forms
Avalonia UI
Qt / KDE
Web / HTML
The format includes comprehensive control libraries for each platform:
<view name="OrderView" type="business-entity" category="core">
<dependencies>
<view-ref name="OrderItemView" relationship="detail" required="true">
<interaction type="manage-items" context="current-order" />
</view-ref>
<view-ref name="CustomerView" relationship="reference" required="false">
<interaction type="view-customer" context="customer-id" />
</view-ref>
<view-ref name="ProductView" relationship="lookup" required="false">
<interaction type="select-product" returns="product-id" />
</view-ref>
</dependencies>
<communication>
<publishes>
<event name="order-created" data="order-id" />
<event name="order-processed" data="order-id" />
</publishes>
<subscribes>
<event name="customer-changed" source="CustomerView" handler="update-customer-info" />
<event name="inventory-updated" source="ProductView" handler="check-availability" />
</subscribes>
</communication>
</view>
The format now includes advanced controls with rich attribute sets:
<validation-rules>
<!-- Data binding validation -->
<rule name="data-binding-validation">
<description>Data binding must be valid and type-safe</description>
<constraint>Binding paths must reference valid properties</constraint>
<constraint>Binding modes must be appropriate for property types</constraint>
</rule>
<!-- Accessibility validation -->
<rule name="accessibility-compliance">
<description>Controls must meet accessibility requirements</description>
<constraint>Interactive controls must have aria-label or accessible text</constraint>
<constraint>Color contrast must meet minimum ratios</constraint>
</rule>
</validation-rules>
project/
├── main.xml # Main document with includes
├── patterns/
│ ├── abstract-controls.xml # Enhanced base control definitions
│ ├── winform-controls.xml # Complete WinForms controls
│ ├── avalonia-controls.xml # Modern Avalonia controls
│ ├── web-controls.xml # Web-specific controls
│ └── kde-controls.xml # KDE/Qt controls
├── views/
│ ├── business-views.xml # Business entity view patterns
│ └── admin-views.xml # Administrative views
├── windows/
│ ├── main-windows.xml # Primary application windows
│ ├── dialog-windows.xml # Modal dialogs and popups
│ └── admin-windows.xml # Administrative interfaces
├── validation/
│ ├── base-validation.xml # Core validation rules
│ ├── view-validation.xml # View-specific rules
│ └── accessibility-rules.xml # Accessibility compliance
└── samples/
├── sample.xml # Comprehensive example
├── sample-minimal.xml # Minimal example
└── platform-config-sample.xml # Platform-specific example
The format includes comprehensive XSD schema files:
important="true"See the included sample files for comprehensive examples:
Version 1.2 maintains full backward compatibility with 1.1 documents. Existing documents will work without modification.
This format specification enables consistent, validated, cross-platform UI definitions with powerful view organization, data binding, accessibility support, external includes, inheritance, and modular design capabilities. The comprehensive control libraries and business view patterns make it suitable for enterprise application development.