315 lines
11 KiB
Markdown
315 lines
11 KiB
Markdown
|
|
---
|
||
|
|
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<ControlData>` | 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<GalleryItemData>` | Lazy-initialized collection (auto-populated with sample items) |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### GalleryCategoryData\<T\>
|
||
|
|
Generic variant inheriting from `ControlData`.
|
||
|
|
|
||
|
|
| Property | Type | Description |
|
||
|
|
|----------|------|-------------|
|
||
|
|
| `GalleryItemDataCollection` | `ObservableCollection<T>` | Lazy-initialized generic collection |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### GalleryData
|
||
|
|
Inherits from `ControlData`.
|
||
|
|
|
||
|
|
| Property | Type | Description |
|
||
|
|
|----------|------|-------------|
|
||
|
|
| `CategoryDataCollection` | `ObservableCollection<GalleryCategoryData>` | Lazy-initialized categories (auto-populated with sample data) |
|
||
|
|
| `SelectedItem` | `GalleryItemData` | Currently selected gallery item |
|
||
|
|
| `CanUserFilter` | `bool` | Whether user can filter gallery items |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### GalleryData\<T\>
|
||
|
|
Generic variant inheriting from `ControlData`.
|
||
|
|
|
||
|
|
| Property | Type | Description |
|
||
|
|
|----------|------|-------------|
|
||
|
|
| `CategoryDataCollection` | `ObservableCollection<GalleryCategoryData<T>>` | 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<ControlData>` | 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<GroupData>` | 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<TabData>` | Lazy-initialized tabs collection |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### RibbonData
|
||
|
|
Implements `INotifyPropertyChanged`.
|
||
|
|
|
||
|
|
| Property | Type | Description |
|
||
|
|
|----------|------|-------------|
|
||
|
|
| `TabDataCollection` | `ObservableCollection<TabData>` | Lazy-initialized tabs (auto-populated based on `ViewModelData.TabCount` and `ViewModelData.ContextualTabGroupCount`) |
|
||
|
|
| `ContextualTabGroupDataCollection` | `ObservableCollection<ContextualTabGroupData>` | 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
|