| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- ENHANCED Platform-specific UI Layout Definition with Data Binding and Accessibility -->
- <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"
- min-version="1.0"
- max-version="2.0"
- target-platform="winforms"
- accessibility-compliance="wcag-aa">
-
- <!-- ENHANCEMENT: Platform-specific pattern includes with version constraints -->
- <patterns>
- <!-- Always include basic controls -->
- <pattern-include src="abstract-controls.xml" important="true" platform="basic" min-version="1.0" max-version="2.0" />
-
- <!-- Platform-specific control definitions -->
- <pattern-include src="winform-controls.xml" important="true" platform="winforms" min-version="1.2" />
- <!-- Avalonia would be optional for WinForms projects -->
- <pattern-include src="avalonia-controls.xml" important="false" platform="avalonia" />
-
- <!-- Custom controls for this project -->
- <pattern-include src="custom-business-controls.xml" important="false" platform="basic" />
- </patterns>
-
- <!-- Views (platform-agnostic) -->
- <views>
- <view-include src="business-views.xml" important="true" min-version="1.0" />
- </views>
-
- <!-- Platform-specific window includes -->
- <window-includes>
- <window-include src="winforms-windows.xml" important="true" platform="winforms" min-version="1.2" />
- <window-include src="common-dialogs.xml" important="false" platform="basic" />
- </window-includes>
-
- <!-- ENHANCEMENT: Enhanced WinForms-specific main window with data binding and accessibility -->
- <window name="MainWindow" title="Enhanced WinForms Application"
- wireframe="StandardAppLayout" view="MainApplicationView"
- target-platform="winforms"
- schema-version="1.2">
-
- <attributes>
- <attribute name="width" value="1200" />
- <attribute name="height" value="800" />
- <attribute name="start-position" value="CenterScreen" />
- <attribute name="window-state" value="Normal" />
- </attributes>
-
- <view-properties>
- <role>main</role>
- <default>true</default>
- <data-context-binding>dashboardData</data-context-binding>
- </view-properties>
-
- <!-- ENHANCEMENT: Data Binding Configuration -->
- <data-binding>
- <data-context source="MainApplicationViewModel" type="ViewModels.MainApplicationViewModel" mode="TwoWay" />
- <view-model class="MainApplicationViewModel" assembly="MyApp.ViewModels" namespace="MyApp.ViewModels" />
- <binding-properties>
- <property control="statusLabel" property="text" binding-path="StatusMessage" mode="OneWay" />
- <property control="dataGrid" property="ItemsSource" binding-path="DataItems" mode="OneWay" />
- <property control="filterTextBox" property="text" binding-path="FilterText" mode="TwoWay" validation-rule="RequiredValidator" />
- </binding-properties>
- </data-binding>
-
- <!-- ENHANCEMENT: Accessibility Configuration -->
- <accessibility compliance-level="wcag-aa">
- <screen-reader window-title="Main Application Window"
- description="Primary application 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>
-
- <slot-overrides>
- <slot name="main-content">
- <!-- ENHANCEMENT: Enhanced Panel with accessibility -->
- <Panel name="mainPanel"
- layout-mode="flex"
- aria-label="Main application content area"
- high-contrast-support="true">
-
- <!-- ENHANCEMENT: Enhanced MenuStrip with accessibility -->
- <MenuStrip name="mainMenu"
- aria-label="Main application menu"
- tab-index="1">
- <menu-items>
- <menu-item text="File" aria-label="File menu" shortcut-key="Alt+F">
- <menu-items>
- <menu-item text="New" shortcut-key="Ctrl+N"
- command-binding="NewCommand"
- aria-label="Create new item" />
- <menu-item text="Open" shortcut-key="Ctrl+O"
- command-binding="OpenCommand"
- aria-label="Open existing item" />
- <menu-item text="" separator="true" />
- <menu-item text="Exit"
- command-binding="ExitCommand"
- aria-label="Exit application" />
- </menu-items>
- </menu-item>
- <menu-item text="Tools" aria-label="Tools menu">
- <menu-items>
- <menu-item text="Options"
- command-binding="OptionsCommand"
- aria-label="Application options" />
- </menu-items>
- </menu-item>
- </menu-items>
- </MenuStrip>
-
- <!-- ENHANCEMENT: Enhanced ToolStrip with data binding -->
- <ToolStrip name="mainToolbar"
- aria-label="Main toolbar"
- tab-index="2">
- <items>
- <ToolStripButton name="newButton"
- text="New"
- image="new.png"
- command-binding="NewCommand"
- aria-label="Create new item" />
- <ToolStripButton name="openButton"
- text="Open"
- image="open.png"
- command-binding="OpenCommand"
- aria-label="Open existing item" />
- <ToolStripSeparator />
- <ToolStripComboBox name="viewCombo"
- items-source="{Binding ViewOptions}"
- aria-label="Select view mode" />
- </items>
- </ToolStrip>
-
- <!-- ENHANCEMENT: Search and filter panel -->
- <Panel name="filterPanel"
- orientation="horizontal"
- padding="5"
- aria-label="Search and filter controls"
- tab-index="3">
-
- <Label name="filterLabel"
- text="Search:"
- aria-label="Search filter" />
-
- <TextBox name="filterTextBox"
- placeholder="Enter search terms..."
- binding-path="FilterText"
- binding-mode="TwoWay"
- validation-rule="StringLengthValidator"
- aria-label="Search input field"
- aria-description="Enter text to filter the data grid results"
- auto-complete="on"
- tab-index="4" />
-
- <Button name="searchButton"
- text="Search"
- style="primary"
- command-binding="SearchCommand"
- is-default="true"
- aria-label="Execute search"
- tab-index="5" />
- </Panel>
-
- <!-- ENHANCEMENT: Enhanced WinForms DataGridView with comprehensive data binding -->
- <DataGridView name="dataGrid"
- allowusertoaddrows="true"
- allowusertodeleterows="true"
- selectionmode="FullRowSelect"
- aria-label="Data grid"
- aria-description="Table displaying application data with sorting and filtering capabilities"
- tab-index="6">
-
- <!-- ENHANCEMENT: Enhanced columns with data binding -->
- <columns>
- <column name="id"
- headertext="ID"
- datapropertyname="Id"
- binding-path="Id"
- width="80"
- readonly="true"
- aria-label="Item identifier" />
-
- <column name="name"
- headertext="Name"
- datapropertyname="Name"
- binding-path="Name"
- width="200"
- aria-label="Item name" />
-
- <column name="category"
- headertext="Category"
- datapropertyname="Category"
- binding-path="Category.Name"
- width="150"
- converter="CategoryToStringConverter"
- aria-label="Item category" />
-
- <column name="created"
- headertext="Created"
- datapropertyname="CreatedDate"
- binding-path="CreatedDate"
- width="120"
- readonly="true"
- aria-label="Creation date" />
- </columns>
- </DataGridView>
-
- <!-- ENHANCEMENT: Enhanced StatusStrip with data binding -->
- <StatusStrip name="statusBar"
- aria-label="Status information">
- <items>
- <ToolStripStatusLabel name="statusLabel"
- text="{Binding StatusMessage}"
- binding-path="StatusMessage"
- binding-mode="OneWay"
- aria-live="polite"
- aria-label="Application status" />
-
- <ToolStripProgressBar name="progressBar"
- visible="{Binding IsLoading}"
- value="{Binding LoadingProgress}"
- minimum="0"
- maximum="100"
- aria-label="Loading progress" />
- </items>
- </StatusStrip>
- </Panel>
- </slot>
- </slot-overrides>
- </window>
-
- <!-- ENHANCEMENT: Enhanced Dialog Window Example -->
- <window name="ItemEditDialog" title="Edit Item"
- wireframe="DialogLayout" view="ItemEditView"
- target-platform="winforms"
- schema-version="1.2">
-
- <attributes>
- <attribute name="width" value="500" />
- <attribute name="height" value="400" />
- <attribute name="start-position" value="CenterParent" />
- <attribute name="window-state" value="Normal" />
- </attributes>
-
- <view-properties>
- <role>editor</role>
- <modal>true</modal>
- <data-context-binding>editItemData</data-context-binding>
- <parent-window>MainWindow</parent-window>
- </view-properties>
-
- <!-- ENHANCEMENT: Data Binding for Dialog -->
- <data-binding>
- <data-context source="ItemEditViewModel" type="ViewModels.ItemEditViewModel" mode="TwoWay" />
- <view-model class="ItemEditViewModel" assembly="MyApp.ViewModels" namespace="MyApp.ViewModels" />
- <binding-properties>
- <property control="nameTextBox" property="text" binding-path="Item.Name" mode="TwoWay" validation-rule="RequiredValidator" />
- <property control="categoryComboBox" property="selected-value" binding-path="Item.CategoryId" mode="TwoWay" />
- <property control="okButton" property="enabled" binding-path="CanSave" mode="OneWay" />
- </binding-properties>
- </data-binding>
-
- <!-- ENHANCEMENT: Dialog Accessibility -->
- <accessibility compliance-level="wcag-aa">
- <screen-reader window-title="Edit Item Dialog"
- description="Form for editing item properties"
- landmark-role="dialog" />
- <keyboard-navigation tab-order-start="1" focus-trap="true" escape-closes="true" />
- </accessibility>
-
- <slot-overrides>
- <slot name="dialog-content">
- <TableLayoutPanel name="editFormLayout"
- columncount="2"
- rowcount="4"
- padding="10"
- aria-label="Item edit form">
-
- <!-- ENHANCEMENT: Enhanced form fields with validation and accessibility -->
- <Label name="nameLabel"
- text="Name:"
- aria-label="Item name label" />
- <TextBox name="nameTextBox"
- binding-path="Item.Name"
- binding-mode="TwoWay"
- validation-rule="RequiredValidator"
- max-length="100"
- required="true"
- aria-label="Item name"
- aria-description="Enter the name for this item"
- tab-index="1" />
-
- <Label name="categoryLabel"
- text="Category:"
- aria-label="Item category label" />
- <ComboBox name="categoryComboBox"
- items-source="{Binding Categories}"
- display-member-path="Name"
- value-member-path="Id"
- selected-value="{Binding Item.CategoryId, Mode=TwoWay}"
- aria-label="Item category"
- aria-description="Select the category for this item"
- tab-index="2" />
-
- <Label name="descriptionLabel"
- text="Description:"
- aria-label="Item description label" />
- <TextBox name="descriptionTextBox"
- multiline="true"
- binding-path="Item.Description"
- binding-mode="TwoWay"
- max-length="500"
- height="80"
- aria-label="Item description"
- aria-description="Enter a detailed description for this item"
- tab-index="3" />
- </TableLayoutPanel>
- </slot>
-
- <slot name="dialog-buttons">
- <Panel name="buttonPanel"
- orientation="horizontal"
- alignment="right"
- padding="10"
- aria-label="Dialog buttons">
-
- <Button name="okButton"
- text="OK"
- style="primary"
- is-default="true"
- command-binding="SaveCommand"
- enabled="{Binding CanSave}"
- aria-label="Save changes"
- tab-index="4" />
-
- <Button name="cancelButton"
- text="Cancel"
- style="secondary"
- is-cancel="true"
- command-binding="CancelCommand"
- aria-label="Cancel without saving"
- tab-index="5" />
- </Panel>
- </slot>
- </slot-overrides>
- </window>
-
- </ui-layout-def>
|