--- source_files: - Common/DTS.CommonCore/RibbonControl/Classes/ButtonData.cs - Common/DTS.CommonCore/RibbonControl/Classes/SeparatorData.cs - Common/DTS.CommonCore/RibbonControl/Classes/GalleryItemData.cs - Common/DTS.CommonCore/RibbonControl/Classes/ComboBoxData.cs - Common/DTS.CommonCore/RibbonControl/Classes/MenuItemData.cs - Common/DTS.CommonCore/RibbonControl/Classes/SplitMenuItemData.cs - Common/DTS.CommonCore/RibbonControl/Classes/ApplicationMenuItemData.cs - Common/DTS.CommonCore/RibbonControl/Classes/ApplicationSplitMenuItemData.cs - Common/DTS.CommonCore/RibbonControl/Classes/TextBoxData.cs - Common/DTS.CommonCore/RibbonControl/Classes/CheckBoxData.cs - Common/DTS.CommonCore/RibbonControl/Classes/RadioButtonData.cs - Common/DTS.CommonCore/RibbonControl/Classes/ToggleButtonData.cs - Common/DTS.CommonCore/RibbonControl/Classes/SplitButtonData.cs - Common/DTS.CommonCore/RibbonControl/Classes/ContextualTabGroupData.cs - Common/DTS.CommonCore/RibbonControl/Classes/ViewModel.cs - Common/DTS.CommonCore/RibbonControl/Classes/GalleryCategoryData.cs - Common/DTS.CommonCore/RibbonControl/Classes/TabData.cs - Common/DTS.CommonCore/RibbonControl/Classes/RibbonData.cs - Common/DTS.CommonCore/RibbonControl/Classes/GalleryData.cs - Common/DTS.CommonCore/RibbonControl/Classes/ControlData.cs - Common/DTS.CommonCore/RibbonControl/Classes/MenuButtonData.cs - Common/DTS.CommonCore/RibbonControl/Classes/GroupData.cs generated_at: "2026-04-17T15:27:41.426809+00:00" model: "zai-org/GLM-5-FP8" schema_version: 1 sha256: "b5848407592cc670" --- # DTS.Common.RibbonControl Data Classes Documentation ## 1. Purpose This module provides a data model layer for a WPF Ribbon control implementation. It defines a hierarchy of data classes that represent ribbon UI elements—tabs, groups, buttons, menus, galleries, and various input controls—each implementing `INotifyPropertyChanged` to support data binding. The module appears designed to serve as a ViewModel or data context layer, separating ribbon state from UI rendering concerns while providing auto-generated sample data for testing/demo purposes. --- ## 2. Public Interface ### ControlData (Base Class) **Namespace:** `DTS.Common.RibbonControl` Base class for all ribbon control data objects. Implements `INotifyPropertyChanged`. | Property | Type | Description | |----------|------|-------------| | `Label` | `string` | Display label for the control | | `LargeImage` | `Uri` | URI for 32x32 icon | | `SmallImage` | `Uri` | URI for 16x16 icon | | `ToolTipTitle` | `string` | Tooltip header text | | `ToolTipDescription` | `string` | Tooltip body text | | `ToolTipImage` | `Uri` | Tooltip image URI | | `ToolTipFooterTitle` | `string` | Tooltip footer title | | `ToolTipFooterDescription` | `string` | Tooltip footer description | | `ToolTipFooterImage` | `Uri` | Tooltip footer image URI | | `Command` | `ICommand` | Command executed on control activation | | `KeyTip` | `string` | Keyboard shortcut hint | **Event:** `PropertyChanged` (from `INotifyPropertyChanged`) --- ### ButtonData Inherits from `ControlData`. No additional members—serves as a marker type for simple button controls. --- ### SeparatorData Inherits from `ControlData`. No additional members—represents a visual separator in menus/toolbars. --- ### GalleryItemData Inherits from `ControlData`. No additional members—represents an individual item within a gallery. --- ### TextBoxData Inherits from `ControlData`. | Property | Type | Description | |----------|------|-------------| | `Text` | `string` | Current text content; raises `PropertyChanged("Text")` on change | --- ### CheckBoxData Inherits from `ControlData`. | Property | Type | Description | |----------|------|-------------| | `IsChecked` | `bool` | Checked state; raises `PropertyChanged("IsChecked")` on change | --- ### RadioButtonData Inherits from `ControlData`. | Property | Type | Description | |----------|------|-------------| | `IsChecked` | `bool` | Selected state; raises `PropertyChanged("IsChecked")` on change | --- ### ToggleButtonData Inherits from `ControlData`. | Property | Type | Description | |----------|------|-------------| | `IsChecked` | `bool` | Toggled state; raises `PropertyChanged("IsChecked")` on change | --- ### MenuButtonData Inherits from `ControlData`. | Constructor | Description | |-------------|-------------| | `MenuButtonData()` | Creates instance with `isApplicationMenu = false` | | `MenuButtonData(bool isApplicationMenu)` | Creates instance with specified application menu flag | | Property | Type | Description | |----------|------|-------------| | `IsVerticallyResizable` | `bool` | Vertical resize capability | | `IsHorizontallyResizable` | `bool` | Horizontal resize capability | | `ControlDataCollection` | `ObservableCollection` | Lazy-initialized collection of child controls (auto-populated with sample data) | --- ### ComboBoxData Inherits from `MenuButtonData`. No additional members. --- ### SplitButtonData Inherits from `MenuButtonData`. | Constructor | Description | |-------------|-------------| | `SplitButtonData()` | Creates instance with `isApplicationMenu = false` | | `SplitButtonData(bool isApplicationMenu)` | Creates instance with specified application menu flag | | Property | Type | Description | |----------|------|-------------| | `IsChecked` | `bool` | Checked state | | `IsCheckable` | `bool` | Whether the button can be toggled | | `DropDownButtonData` | `ButtonData` | Lazy-initialized button data for dropdown portion | --- ### MenuItemData Inherits from `SplitButtonData`. | Constructor | Description | |-------------|-------------| | `MenuItemData()` | Creates instance with `isApplicationMenu = false` | | `MenuItemData(bool isApplicationMenu)` | Creates instance with specified application menu flag | --- ### SplitMenuItemData Inherits from `MenuItemData`. | Constructor | Description | |-------------|-------------| | `SplitMenuItemData()` | Creates instance with `isApplicationMenu = false` | | `SplitMenuItemData(bool isApplicationMenu)` | Creates instance with specified application menu flag | --- ### ApplicationMenuItemData Inherits from `MenuItemData`. | Constructor | Description | |-------------|-------------| | `ApplicationMenuItemData()` | Creates instance with `isApplicationMenu = false` | | `ApplicationMenuItemData(bool isApplicationMenu)` | Creates instance with specified application menu flag | --- ### ApplicationSplitMenuItemData Inherits from `SplitMenuItemData`. | Constructor | Description | |-------------|-------------| | `ApplicationSplitMenuItemData()` | Creates instance with `isApplicationMenu = false` | | `ApplicationSplitMenuItemData(bool isApplicationMenu)` | Creates instance with specified application menu flag | --- ### GalleryCategoryData Inherits from `ControlData`. | Property | Type | Description | |----------|------|-------------| | `GalleryItemDataCollection` | `ObservableCollection` | Lazy-initialized collection (auto-populated with sample items) | --- ### GalleryCategoryData\ Generic variant inheriting from `ControlData`. | Property | Type | Description | |----------|------|-------------| | `GalleryItemDataCollection` | `ObservableCollection` | Lazy-initialized generic collection | --- ### GalleryData Inherits from `ControlData`. | Property | Type | Description | |----------|------|-------------| | `CategoryDataCollection` | `ObservableCollection` | Lazy-initialized categories (auto-populated with sample data) | | `SelectedItem` | `GalleryItemData` | Currently selected gallery item | | `CanUserFilter` | `bool` | Whether user can filter gallery items | --- ### GalleryData\ Generic variant inheriting from `ControlData`. | Property | Type | Description | |----------|------|-------------| | `CategoryDataCollection` | `ObservableCollection>` | Lazy-initialized generic categories | | `SelectedItem` | `T` | Currently selected item | | `CanUserFilter` | `bool` | Whether user can filter gallery items | --- ### GroupData Inherits from `ControlData`. | Constructor | Description | |-------------|-------------| | `GroupData(string header)` | Creates instance with specified header label | | Property | Type | Description | |----------|------|-------------| | `ControlDataCollection` | `ObservableCollection` | Lazy-initialized child controls (auto-populated with sample controls) | --- ### TabData Implements `INotifyPropertyChanged`. | Constructor | Description | |-------------|-------------| | `TabData()` | Creates instance with null header | | `TabData(string header)` | Creates instance with specified header | | Property | Type | Description | |----------|------|-------------| | `Header` | `string` | Tab display text | | `ContextualTabGroupHeader` | `string` | Header of associated contextual tab group | | `IsSelected` | `bool` | Selection state | | `GroupDataCollection` | `ObservableCollection` | Lazy-initialized groups (auto-populated with sample groups) | --- ### ContextualTabGroupData Implements `INotifyPropertyChanged`. | Constructor | Description | |-------------|-------------| | `ContextualTabGroupData()` | Creates instance with null header | | `ContextualTabGroupData(string header)` | Creates instance with specified header | | Property | Type | Description | |----------|------|-------------| | `Header` | `string` | Group display text | | `IsVisible` | `bool` | Visibility state | | `TabDataCollection` | `ObservableCollection` | Lazy-initialized tabs collection | --- ### RibbonData Implements `INotifyPropertyChanged`. | Property | Type | Description | |----------|------|-------------| | `TabDataCollection` | `ObservableCollection` | Lazy-initialized tabs (auto-populated based on `ViewModelData.TabCount` and `ViewModelData.ContextualTabGroupCount`) | | `ContextualTabGroupDataCollection` | `ObservableCollection` | Lazy-initialized contextual groups | | `ApplicationMenuData` | `MenuButtonData` | Lazy-initialized application menu data | --- ### ViewModelData (Static Class) | Constant | Type | Value | Description | |----------|------|-------|-------------| | `TabCount` | `int` | 4 | Number of tabs to generate | | `ContextualTabGroupCount` | `int` | 2 | Number of contextual groups | | `GroupCount` | `int` | 3 | Groups per tab | | `ControlCount` | `int` | 5 | Controls per group (unused) | | `ButtonCount` | `int` | 1 | Buttons per group | | `ToggleButtonCount` | `int` | 1 | ToggleButtons per group | | `RadioButtonCount` | `int` | 1 | RadioButtons per group | | `CheckBoxCount` | `int` | 1 | CheckBoxes per group | | `TextBoxCount` | `int` | 1 | TextBoxes per group | | `MenuButtonCount` | `int` | 1 | MenuButtons per group | | `MenuItemCount` | `int` | 2 | MenuItems per menu | | `SplitButtonCount` | `int` | 1 | SplitButtons per group | | `SplitMenuItemCount` | `int` | 2 | SplitMenuItems per menu | | `GalleryCount` | `int` | 1 | Galleries per menu | | `GalleryCategoryCount` | `int` | 3 | Categories per gallery | | `GalleryItemCount` | `int` | 10 | Items per gallery category | | `MenuItemNestingCount` | `int` | 2 | Maximum menu nesting depth | | `ComboBoxCount` | `int` | 1 | ComboBoxes per group | | Property | Type | Description | |----------|------|-------------| | `RibbonData` | `RibbonData` | Thread-static lazy-initialized ribbon data instance | | `DefaultCommand` | `ICommand` | Lazy-initialized `DelegateCommand` that always executes successfully