# c-entron.NET WPF GUI - Comprehensive UI Element Inventory

**Generated**: November 6, 2025 | **Total XAML Views**: 951 | **Total Modules**: 30 | **Pattern**: MVVM

---

## MODULE STRUCTURE OVERVIEW

### Module 1: ADMINISTRATION (32+ submodules)

#### CountryManagement
- **View**: `Administration/CountryManagement/CountryManagementView.xaml`
- **ViewModel**: `CountryManagementViewModel`
- **UI**: RibbonControl (Save, New, Deactivate, Update Currency) + GridControl (Countries) + TextEdit fields (Name, ShortSign, DialingCode) + CheckEdit (IsDefault, AvailableInInvestmentModule)
- **Commands**: NewCountryCommand, UpdateCountryCommand, NewFederalStateCommand, SelectFlagCommand, RemoveFlagCommand, DeactivateCountryCommand, DeactivateFederalStateCommand, LatestCurrencyCommand, OpenIsoWikiCommand
- **Properties**: Countries (CentronObservableCollection<CountryViewModel>), SelectedCountry, SelectedFederalState
- **Reuse**: Single-use (CountryManagement only)

#### RightsManagement
- **Key Feature**: Hierarchical rights assignment with group creation
- **Controls**: TreeView for hierarchy, DataGrid for rights, ContextMenu

#### EmployeeManagement
- **Key Feature**: Multi-tab employee data, dashboards
- **Submodules**: CommonEmployeeDashboardContainerView, EmployeeSalesDashboardContainerView

#### Settings, LogViewer, MailTemplates, Connections, DSGVO, MandatorManagement, HourlySurchargeRates, ReportServer
- Various configuration and management interfaces

---

### Module 2: FINANCES (40+ submodules)

#### AccountManagement [CRITICAL REUSE - 8+ CONTEXTS]
- **View**: `Finances/AccountManagement/AccountManagementView.xaml`
- **ViewModel**: `AccountManagementViewModel`
- **REUSE INSTANCES**: 
  1. Finances.AccountManagement (primary)
  2. Finances dialogs
  3. CRM customer panels
  4. Reports module
  5. Additional contexts

- **UI**: LayoutControl + ButtonEdit (Customer search) + GridControl (Customers) + TabControl with:
  * ReceiptsOverviewViewModel (nested)
  * TicketListViewModel (REUSED - see below)
  * AccountSalesStatisticViewModel (nested)
  * BranchBookKeepingNumbersViewModel (nested)
- **Commands**: SearchCommand, ClearSearchCommand
- **Properties**: SearchText (string), Customers (ObservableCollection<AccountSearchItemDTO>), SelectedCustomer, ReceiptsOverviewViewModel, TicketListViewModel, AccountSalesStatisticViewModel, OrderProcessingContracts, SepaContracts
- **Converters**: AccountSearchItemDTOToAddressConverter, OrderProcessingContractStateToBitmapConverter

#### Receipts (ReceiptsOverview, ReceiptsList)
- **Controls**: GridControl for receipts list/items, TextEdit/ComboBox/SpinEdit for data entry

#### AutomatedBilling
- **Pattern**: Wizard-based multi-page workflow
- **Pages**: CustomerSelection, ContractSelection, BillingDate, SendSettings, Overview, BillingResult
- **Commands**: NextPageCommand, PreviousPageCommand, FinishCommand, PreviewCommand, SendCommand

#### Campaigns
- **Controls**: GridControl, TextEdit, DateEdit, ComboBox, Button
- **Sub-Views**: CampaignCustomerDetailView, HistoryItemsView

#### Payments, Dunning, Opos, Contracts, CRM, TimerBilling, FlatrateBilling
- Specialized financial management interfaces

---

### Module 3: HELPDESK (30+ submodules)

#### TicketList [CRITICAL REUSE - 8+ CONTEXTS]
- **View**: `Helpdesk/TicketList/TicketListView.xaml`
- **ViewModel**: `TicketListViewModel : ViewModelBase, IViewModelWithLoading, IDeferredLoadingCrmPart`
- **REUSE INSTANCES**:
  1. Helpdesk.TicketList (primary)
  2. Finances.AccountManagement.AccountManagementView (nested tab)
  3. Sales.CampaignAnalysis
  4. Warehousing.CommissioningList
  5. Reports module
  6. Dashboard containers
  7. MyCentron module
  8. Multiple dialog wrappers

- **UI**: LayoutControl + LayoutGroup (Filter section, collapsible)
  * ButtonEdit (SearchText with Clear button)
  * DateEdit (CreatedDateStart, CreatedDateEnd, DueDateStart, DueDateEnd)
  * ComboBox (SelectedStatus, SelectedMainCategory, SelectedSubCategory1, SelectedSubCategory2, SelectedBranch, SelectedConnectionNumberGroup)
  * CheckEdit (ShowClosed)
  * TextEdit (SearchNumber, SearchText)
  * GridControl (Main ticket list, ItemsSource: Helpdesks, SelectedItem: SelectedHelpdesk, SelectedItems: SelectedHelpdesks - multi-select)
  * ContextMenu (Open, Forward, Close, CreateRMA, Export)
  * Color formatting by status/priority

- **Commands**: ClearFiltersCommand

- **Filter Properties**:
  * SearchText, SearchNumber (string)
  * SelectedMainCategory, SelectedSubCategory1, SelectedSubCategory2 (HelpdeskCategoryDTO)
  * MainCategories, SubCategories1, SubCategories2 (ObservableCollection<HelpdeskCategoryDTO>)
  * SelectedBranch (BranchPreviewDTO)
  * Branches (CentronObservableCollection<BranchPreviewDTO>)
  * SelectedStatus (HelpdeskStatusDTO)
  * Status (ObservableCollection<HelpdeskStatusDTO>)
  * CreatedDateStart, CreatedDateEnd, DueDateStart, DueDateEnd (DateTime?)
  * ShowClosed (bool)
  * SelectedConnectionNumberGroup (HelpdeskConnectionNumberGroupDTO)
  * ConnectionNumberGroups (CentronObservableCollection<HelpdeskConnectionNumberGroupDTO>)

- **Data Properties**:
  * Helpdesks (CentronObservableCollection<HelpdeskListItemViewModel>)
  * SelectedHelpdesk (HelpdeskListItemViewModel)
  * SelectedHelpdesks (CentronObservableCollection<HelpdeskListItemViewModel>)
  * SelectedAccounts (ObservableCollection<AccountSearchItemDTO>)
  * CurrentMode (TicketListTicketMode)
  * HasHelpdeskRight (bool)
  * UISettings (TicketListUISettingsViewModel)

- **Converters**: SecondsToTimeSpanConverter, HoursToTimeSpanConverter, ColorStringToBrushConverter, OrderProcessingContractStateToToolTipConverter

#### TicketDetails
- **View**: `Helpdesk/TicketDetails/TicketDetailView.xaml`
- **Controls**: TabControl (General, Timeline, Attachments, RMA, TimeTracking)
- **Features**: Comprehensive ticket lifecycle management

#### TimeRecording
- **Controls**: SpinEdit (Hours/Minutes), DateEdit, TextEdit, ComboBox, Button
- **Sub-View**: ArticleToTimeView (GridControl for article mapping)

#### Dashboard Containers (7 variations)
- HelpdeskDashboardContainerView
- TicketStatusDasboardContainerView
- TicketPriorityDashboardContainerView
- TicketTypeDashboardContainerView
- TicketDueDateDashboardContainerView
- TicketDatesDashboardContainerView
- TicketRecordedTimeContainerView
- **Pattern**: ChartControl + GridControl + TextBlock statistics

#### CentronChecklist, ExpectedEvents, TaskManagement, SendSelfCareForm, Settings
- Additional helpdesk submodules

---

### Module 4: WAREHOUSING (20+ submodules)

#### ArticleManagement
- **Controls**: GridControl (articles), TextEdit/ComboBox (properties), SpinEdit (stock)

#### ArticleImport
- **Pattern**: Multi-step import wizard
- **Controls**: Button (file select), GridControl (preview), ComboBox (mapping), ProgressBar

#### Commissioning
- **Controls**: GridControl (picking list), SpinEdit (quantity), TextEdit (serial), Button
- **Feature**: Real-time inventory, barcode scanning

#### Additional: AccountSystems, BarcodeSettings, ForeignArticles, CopyArticle, ConvertArticle, Inventory, PriceUpdate, Rebooking, AutoEOL, SerialNumber

---

### Module 5: SALES (15+ submodules)
- GridControl-based order/quotation management
- RichTextEdit for notes, ComboBox for product selection, SpinEdit for quantities
- DateEdit for dates, Button for order actions

### Module 6: PURCHASING (12+ submodules)

#### OrderSuggestion
- **Controls**: GridControl (suggestions), ComboBox (supplier), SpinEdit (quantity), Button (create PO)

#### EDI Management
- **Pattern**: Tab-based transaction management
- **Controls**: TabControl (receipt types), GridControl (messages), TextEdit (search), Button (process/reject)
- **Sub-Views**: EDIReceiptTabsView, EDIHistoryView, EDISupplierListView

### Module 7: PRODUCTION (8+ submodules)

#### ProductionOrder
- **Controls**: GridControl (orders), TextEdit/ComboBox/DateEdit, SpinEdit (quantities), Button

#### MachineManagement
- **Controls**: GridControl (machines), TextEdit/ComboBox (properties), Button

### Module 8: QM (3+ submodules)
- GridControl for quality records, ComboBox for status, TextEdit for notes

### Module 9: PLM (1-2 submodules)
- Single-view module structure

### Module 10: Reports (5+ submodules)
- QueryAppModuleControllerView (SQL query builder)
- ReportEngineAppModuleControllerView (template design)

### Modules 11-30 (Dashboard, Calendar, MyCentron, DataExchange, etc.)
- Various specialized interfaces and utilities

---

## MVVM PATTERNS

### Command Pattern
```
public DelegateCommand NewCountryCommand { get; }
public AsyncCommand UpdateCountryCommand { get; }

public ViewModel()
{
    this.NewCountryCommand = new DelegateCommand(this.AddNewCountry);
    this.UpdateCountryCommand = new AsyncCommand(this.UpdateCountry);
}
```

### Observable Collection Pattern
```
private CentronObservableCollection<CountryViewModel> _countries;
public CentronObservableCollection<CountryViewModel> Countries
{
    get => this._countries;
    set => this.SetProperty(ref this._countries, value, nameof(this._countries));
}
```

### XAML Binding Pattern
```
<TextEdit EditValue="{Binding SelectedCountry.CountryName, UpdateSourceTrigger=PropertyChanged}" />
<Button Command="{Binding SaveCommand}" Content="Save" />
<GridControl ItemsSource="{Binding Countries}" SelectedItem="{Binding SelectedCountry}" />
```

---

## COMMON UI CONTROL TYPES

### DevExpress Controls (Primary)
- dxg:GridControl (master-detail data)
- dxe:TextEdit (single-line text)
- dxe:ComboBox (dropdown)
- dxe:CheckEdit (checkbox with label)
- dxe:DateEdit (date picker)
- dxe:ButtonEdit (text + action buttons)
- dxe:SpinEdit (numeric)
- dxe:RichTextEdit (rich text)
- dxb:BarButtonItem (ribbon buttons)
- dxr:RibbonControl (ribbon interface)
- dxcl:LayoutControl (responsive layout)
- dxcl:LayoutGroup (grouped sections)
- dxcl:LayoutItem (form fields)

### WPF Standard Controls
- Grid, TextBlock, TextBox, PasswordBox, Button, CheckBox, RadioButton, ComboBox, ListBox, DataGrid, TabControl, TreeView

### Custom Controls
- BaseModule, LayoutControl, GridControl (DevExpress)

---

## HIGH-REUSE VIEWMODELS

1. **TicketListViewModel** (8+ contexts - CRITICAL)
   - Primary: Helpdesk ticket listing
   - Embedded: Finances, Sales, Warehousing, Reports, Dashboards

2. **ReceiptsOverviewViewModel** (4+ contexts)
   - Primary: Finances receipt management
   - Embedded: AccountManagement, CRM, Reports

3. **AccountManagementViewModel** (2-3 contexts)
   - Primary: Finances.AccountManagement
   - Secondary: Dialogs, CRM panels

4. **Dashboard ViewModels** (7+ variations)
   - Statistics aggregation across modules

---

## NAMING CONVENTIONS

### Commands
- {Action}Command (SaveCommand, DeleteCommand)
- Show{Feature}Command (ShowDetailsCommand)
- {Action}{Entity}Command (UpdateCountryCommand)
- Clear{FilterType}Command (ClearFiltersCommand)
- Is{State}Command (IsSetToDefaultCountryCommand)

### Properties
- {Entity}Collection (Customers, Countries)
- Selected{Entity} (SelectedCountry, SelectedCustomer)
- {Property}Value (SearchText, DescriptionValue)
- {Filter}Start/{Filter}End (CreatedDateStart, CreatedDateEnd)
- Has{Right/Feature} (HasHelpdeskRight, HasCrmDetailStatisticRights)
- Is{State} (IsLoading, IsProcessing)
- Show{Component} (ShowFilter, ShowClosed)

---

## KEY ARCHITECTURAL INSIGHTS

1. **Extreme ViewModel Reuse**: TicketListViewModel appears in 8+ different Views
2. **Deep Nesting**: AccountManagementViewModel contains 5+ child ViewModels
3. **Grid-Heavy**: 80%+ of data display uses DevExpress GridControl
4. **Ribbon Ubiquity**: 150+ views use dxr:RibbonControl
5. **Async Operations**: Extensive AsyncCommand usage for responsiveness
6. **Multi-language**: All UI text via LocalizedStrings (German/English)
7. **Permission-Based Rendering**: Conditional visibility based on user rights
8. **Wizard Patterns**: 5+ workflows use step-by-step wizards
9. **Complex Filtering**: Most list views have 5-10 filter dimensions
10. **Master-Detail Pattern**: Standard layout: left panel (~300px) + detail area (flex)

---

## METRICS

- Total XAML Views: 951
- Total Modules: 30
- Total Submodules: 180+
- Primary Framework: DevExpress 24.2.7 (WPF + Blazor)
- Command Types: DelegateCommand, AsyncCommand
- Base Classes: BindableBase, ViewModelBase
- Collection Type: CentronObservableCollection, ObservableCollection
- GridControl Usage: ~500+ views
- Ribbon Usage: ~150+ views
- High-Reuse ViewModels: 5-7 shared across modules
