--- source_files: - DTS Viewer/DTS.Viewer/View/TabView.xaml.cs - DTS Viewer/DTS.Viewer/View/MenuView.xaml.cs - DTS Viewer/DTS.Viewer/View/MainView.xaml.cs - DTS Viewer/DTS.Viewer/View/ShellView.xaml.cs - DTS Viewer/DTS.Viewer/View/ViewerShellView.xaml.cs - DTS Viewer/DTS.Viewer/View/NavigationView.xaml.cs generated_at: "2026-04-16T14:01:33.745460+00:00" model: "zai-org/GLM-5-FP8" schema_version: 1 sha256: "c4a45b12e62dbb35" --- # Documentation: DTS.Viewer Views ## 1. Purpose This module contains the code-behind files for WPF views in the DTS Viewer application. Each view is a partial class that implements a corresponding interface from `DTS.Common.Interface`, enabling view abstraction and likely supporting patterns such as MVVM or dependency injection. These views serve as the visual components of the application's UI layer, with their actual layout and control definitions residing in associated XAML files (not provided). --- ## 2. Public Interface ### `TabView` (namespace: `DTS.Viewer`) - **Implements:** `ITabView` - **Constructor:** `public TabView()` - **Behavior:** Initializes the WPF component via `InitializeComponent()`. No additional logic is defined in the code-behind. ### `MenuView` (namespace: `DTS.Viewer`) - **Implements:** `IMenuView` - **Constructor:** `public MenuView()` - **Behavior:** Initializes the WPF component via `InitializeComponent()`. No additional logic is defined in the code-behind. ### `MainView` (namespace: `DTS.Viewer`) - **Implements:** `IMainView` - **Constructor:** `public MainView()` - **Behavior:** Initializes the WPF component via `InitializeComponent()`. No additional logic is defined in the code-behind. ### `ShellView` (namespace: `DTS.Viewer.View`) - **Implements:** `IViewerShellView` - **Constructor:** `public ShellView()` - **Behavior:** Initializes the WPF component via `InitializeComponent()`. No additional logic is defined in the code-behind. ### `ViewerShellView` (namespace: `DTS.Viewer`) - **Implements:** `IViewerShellView` - **Constructor:** `public ViewerShellView()` - **Behavior:** Initializes the WPF component via `InitializeComponent()`. No additional logic is defined in the code-behind. ### `NavigationView` (namespace: `DTS.Viewer`) - **Implements:** `INavigationView` - **Constructor:** `public NavigationView()` - **Behavior:** Initializes the WPF component via `InitializeComponent()`. No additional logic is defined in the code-behind. --- ## 3. Invariants - Each view class is a `partial` class, implying a corresponding XAML-generated portion exists at compile time. - Each view implements exactly one interface from `DTS.Common.Interface`. - The constructor for each view calls `InitializeComponent()` exactly once, which is required for WPF element tree initialization. - All views are stateless in their code-behind; no fields, properties, or methods beyond the constructor are defined. --- ## 4. Dependencies ### This module depends on: - `DTS.Common.Interface` — Provides the interfaces `ITabView`, `IMenuView`, `IMainView`, `IViewerShellView`, and `INavigationView`. ### What depends on this module: - **Cannot be determined from source alone.** The XAML files (e.g., `TabView.xaml`, `MenuView.xaml`, etc.) would reference these code-behind classes, but consumers of these views are not visible in the provided source. --- ## 5. Gotchas 1. **Two classes implement `IViewerShellView`:** Both `ShellView` (in namespace `DTS.Viewer.View`) and `ViewerShellView` (in namespace `DTS.Viewer`) implement the same interface `IViewerShellView`. The intended distinction between these two shell views is unclear from the source alone—this may indicate a refactoring remnant or intentional separation of concerns. 2. **Potential copy-paste error in XML comment:** `ViewerShellView.xaml.cs` contains the XML comment `"Interaction logic for ShellView.xaml"`, which incorrectly references `ShellView.xaml` instead of `ViewerShellView.xaml`. This appears to be a documentation typo. 3. **Inconsistent namespace usage:** `ShellView` resides in `DTS.Viewer.View`, while all other views reside directly in `DTS.Viewer`. The reason for this namespace difference is not evident from the source.