4.1 KiB
4.1 KiB
source_files, generated_at, model, schema_version, sha256
| source_files | generated_at | model | schema_version | sha256 | ||
|---|---|---|---|---|---|---|
|
2026-04-16T03:07:38.322183+00:00 | Qwen/Qwen3-Coder-Next-FP8 | 1 | 2a3c86a0916b7d5f |
Navigation
1. Purpose
This module defines the foundational interfaces for navigation-related view and view model components within the DTS Viewer subsystem. Specifically, INavigationView and INavigationViewModel establish a contract for navigation UI layers, enforcing a separation of concerns where the view (UI layer) is bound to a view model (logic/data layer), with the view model exposing a reference back to its associated view. These interfaces extend base abstractions (IBaseView, IBaseViewModel) to integrate into a larger MVVM (Model-View-ViewModel) architecture, enabling consistent navigation state management and view coordination.
2. Public Interface
INavigationView
- Signature:
public interface INavigationView : IBaseView { } - Behavior: Represents the UI layer for navigation functionality. It inherits from
IBaseView, implying it adheres to the base view contract (e.g., lifecycle, binding context, or rendering responsibilities), but contains no additional members itself. Its purpose is to serve as a typed marker interface for navigation-specific views.
INavigationViewModel
- Signature:
public interface INavigationViewModel : IBaseViewModel- Property:
INavigationView NavigationView { get; }
- Property:
- Behavior: Represents the view model for navigation logic. It exposes a read-only property
NavigationViewthat provides access to the associatedINavigationViewinstance. This enables the view model to interact with or query the view (e.g., for navigation commands, state updates, or coordination), while maintaining loose coupling through the interface.
3. Invariants
INavigationViewmust be implemented by a concrete view class (e.g., a XAML page or control) that participates in the navigation flow.INavigationViewModelmust be implemented by a view model class that maintains a reference to an instance of a type implementingINavigationView.- The
NavigationViewproperty inINavigationViewModelmust return a non-null reference to the view instance it is bound to (or has been associated with) during the view-model/view lifecycle. - Both interfaces extend their respective base interfaces (
IBaseView,IBaseViewModel), so all invariants of those base interfaces (e.g., binding context requirements, disposal patterns) apply transitively.
4. Dependencies
- Depends on:
DTS.Common.Base.IBaseView(viaINavigationView)DTS.Common.Base.IBaseViewModel(viaINavigationViewModel)
- Depended on by:
- Concrete implementations of navigation views (e.g.,
ShellView,MainMenuView) will implementINavigationView. - Concrete navigation view models (e.g.,
ShellViewModel,NavigationViewModel) will implementINavigationViewModel. - Other modules (e.g., navigation service, shell host, or region manager) likely depend on
INavigationViewModelto access or coordinate the navigation UI.
- Concrete implementations of navigation views (e.g.,
- Note: The source files do not specify concrete consumers, but the design strongly suggests usage in a view model locator or navigation framework (e.g., Prism, MVVM Light, or custom).
5. Gotchas
- The interfaces are intentionally minimal and serve as marker interfaces—they convey semantic meaning (navigation context) but no behavior. Consumers must rely on other mechanisms (e.g., commands, events, or additional interfaces) for actual navigation logic.
- The
NavigationViewproperty inINavigationViewModelis read-only, implying the view reference is set once (e.g., during view-model initialization or binding) and not expected to change. Reassignment may break assumptions in consuming code. - No explicit thread-safety or lifecycle guarantees are defined for the
NavigationViewreference; callers should assume it is valid only during the active lifetime of the view/view-model pair. - None identified from source alone.