92 lines
4.9 KiB
Markdown
92 lines
4.9 KiB
Markdown
---
|
|
source_files:
|
|
- DTS Viewer/DTS.Viewer/Classes/MenuItem.cs
|
|
- DTS Viewer/DTS.Viewer/Classes/TabItem.cs
|
|
- DTS Viewer/DTS.Viewer/Classes/NavigationItem.cs
|
|
- DTS Viewer/DTS.Viewer/Classes/BindingProxy.cs
|
|
- DTS Viewer/DTS.Viewer/Classes/ComplonentsGroupControl.cs
|
|
generated_at: "2026-04-16T14:00:14.795210+00:00"
|
|
model: "zai-org/GLM-5-FP8"
|
|
schema_version: 1
|
|
sha256: "e704fa30e232a4ba"
|
|
---
|
|
|
|
# Documentation: DTS.Viewer Classes
|
|
|
|
## 1. Purpose
|
|
|
|
This module provides a collection of UI support classes for the DTS Viewer WPF application. It includes data binding helpers (`BindingProxy`), custom controls (`ComponentsGroupControl`), and placeholder model classes (`MenuItem`, `TabItem`, `NavigationItem`) that appear to serve as stubs for UI element representation. The module exists to support XAML data binding scenarios and custom control styling within the viewer application.
|
|
|
|
---
|
|
|
|
## 2. Public Interface
|
|
|
|
### `DTS.Viewer.BindingProxy`
|
|
A `Freezable`-derived class that enables data binding in scenarios where the DataContext is not inherited (e.g., within style setters).
|
|
|
|
| Member | Signature | Description |
|
|
|--------|-----------|-------------|
|
|
| `CreateInstanceCore` | `protected override Freezable CreateInstanceCore()` | Creates a new instance of `BindingProxy`. Required override for `Freezable` derivation. |
|
|
| `DataProperty` | `public static readonly DependencyProperty` | Dependency property identifier for `Data`. |
|
|
| `Data` | `public object Data { get; set; }` | A generic object property that can be bound to any data source. |
|
|
|
|
### `DTS.Viewer.ComponentsGroupControl`
|
|
A custom `Control` for displaying grouped component information with an image and title.
|
|
|
|
| Member | Signature | Description |
|
|
|--------|-----------|-------------|
|
|
| `ClickEventArgs` | `public class ClickEventArgs : EventArgs` | Nested class for click event arguments. Currently has no payload properties. |
|
|
| `ClickCommand` | `public static RoutedCommand ClickCommand { get; }` | Static routed command for handling click actions. |
|
|
| `ImageProperty` | `public static readonly DependencyProperty` | Dependency property identifier for `Image`. |
|
|
| `Image` | `public ImageSource Image { get; set; }` | The image source to display in the control. |
|
|
| `TitleProperty` | `public static readonly DependencyProperty` | Dependency property identifier for `Title`. Default value is `"Title"`. |
|
|
| `Title` | `public string Title { get; set; }` | The title text displayed by the control. |
|
|
|
|
### `DTS.Viewer.Classes.NavigationItem`
|
|
An empty public class with no members. Purpose is unclear from source alone.
|
|
|
|
### `DTS.Viewer.MenuItem`
|
|
An empty internal class with no members. Purpose is unclear from source alone.
|
|
|
|
### `DTS.Viewer.Classes.TabItem`
|
|
An empty internal class with no members. Purpose is unclear from source alone.
|
|
|
|
---
|
|
|
|
## 3. Invariants
|
|
|
|
- **BindingProxy**: Must derive from `Freezable` to function correctly in WPF binding scenarios. The `CreateInstanceCore()` method must always return a new `BindingProxy` instance.
|
|
- **ComponentsGroupControl**:
|
|
- The static constructor always calls `InitializeCommands()` before any instance is created.
|
|
- `DefaultStyleKeyProperty` is overridden to reference `typeof(ComponentsGroupControl)`, ensuring the control uses its defined default style.
|
|
- `Title` property always has a non-null default value of `"Title"`.
|
|
- `Image` property defaults to `null`.
|
|
|
|
---
|
|
|
|
## 4. Dependencies
|
|
|
|
### This module depends on:
|
|
- `System.Windows` (WPF framework - `Freezable`, `DependencyProperty`, `FrameworkPropertyMetadata`, `UIPropertyMetadata`, `RoutedCommand`, `CommandManager`, `CommandBinding`)
|
|
- `System.Windows.Controls` (`Control` class)
|
|
- `System.Windows.Input` (`ExecutedRoutedEventArgs`)
|
|
- `System.Windows.Media` (`ImageSource`)
|
|
- `System` (`EventArgs`)
|
|
|
|
### What depends on this module:
|
|
- Cannot be determined from source alone. These classes appear to be consumed by XAML views and other components within the DTS.Viewer application.
|
|
|
|
---
|
|
|
|
## 5. Gotchas
|
|
|
|
1. **Empty stub classes**: `MenuItem`, `TabItem`, and `NavigationItem` are completely empty with no members. Their purpose and expected usage are unclear from source alone—they may be placeholders for future implementation or remnants of incomplete development.
|
|
|
|
2. **Dead code in ComponentsGroupControl**:
|
|
- The `ClickEventArgs` class exists but is never instantiated or used.
|
|
- Commented-out code references `OnClicked` event, `Subtitle` property, and `TabItem` property, suggesting incomplete or abandoned features.
|
|
- The `OnCommandExecute` handler casts the sender to `ComponentsGroupControl` but performs no action afterward.
|
|
|
|
3. **Namespace inconsistency**: `MenuItem` resides in `DTS.Viewer` namespace while `TabItem` and `NavigationItem` are in `DTS.Viewer.Classes`. This inconsistency may cause confusion when referencing these types.
|
|
|
|
4. **BindingProxy XML comment**: The comment states "XAML Row Style Color support class" but the implementation is generic—this suggests the class may have broader utility than the comment implies. |