--- source_files: - Common/DTS.CommonCore/Interface/DTS.Viewer/Navigation/INavigationView.cs - Common/DTS.CommonCore/Interface/DTS.Viewer/Navigation/INavigationViewModel.cs generated_at: "2026-04-16T12:23:10.877701+00:00" model: "zai-org/GLM-5-FP8" schema_version: 1 sha256: "3183c8a5d454e0e2" --- # Documentation: Navigation Interfaces ## 1. Purpose This module defines the core navigation interfaces for the DTS viewer system, establishing a contract between navigation views and their associated view models. It follows the MVVM (Model-View-ViewModel) pattern, providing `INavigationView` as a marker interface for navigation view components and `INavigationViewModel` as the interface that exposes access to the navigation view. This abstraction layer allows for decoupled navigation components within the larger DTS.CommonCore framework. --- ## 2. Public Interface ### `INavigationView` **Namespace:** `DTS.Common.Interface` **Inheritance:** `IBaseView` An empty marker interface extending `IBaseView`. It defines no members of its own; its purpose is to provide type identity for navigation view implementations within the view hierarchy. --- ### `INavigationViewModel` **Namespace:** `DTS.Common.Interface` **Inheritance:** `IBaseViewModel` | Member | Type | Access | Description | |--------|------|--------|-------------| | `NavigationView` | `INavigationView` | `get` | Returns the associated navigation view instance. | --- ## 3. Invariants - `INavigationView` must always inherit from `IBaseView`. - `INavigationViewModel` must always inherit from `IBaseViewModel`. - The `NavigationView` property on any `INavigationViewModel` implementation must return an object that implements `INavigationView`. - The inheritance chain implies that any `INavigationView` or `INavigationViewModel` implementation must also satisfy the contracts of their respective base interfaces (`IBaseView`, `IBaseViewModel`). --- ## 4. Dependencies ### This module depends on: - `DTS.Common.Base` — provides `IBaseView` and `IBaseViewModel` base interfaces. ### What depends on this module: - **Cannot be determined from source alone.** No downstream consumers are visible in the provided files. --- ## 5. Gotchas 1. **Documentation mismatch:** The XML summary comment for `INavigationViewModel.NavigationView` states "Gets the Shell View," but the property is named `NavigationView`. It is unclear whether this is a copy-paste error in documentation, a historical naming remnant, or if "Shell View" and "Navigation View" are intended to be synonymous in this context. 2. **Empty interface design:** `INavigationView` defines no members and serves only as a marker interface. Developers implementing this interface must consult `IBaseView` to understand the actual required members, which are not visible in these source files.