--- source_files: - DTS Viewer/DTS.Viewer/View/DockPanelHorizontal/ViewModel/DockPanelHorizontalViewModel.cs generated_at: "2026-04-17T16:29:26.445526+00:00" model: "zai-org/GLM-5-FP8" schema_version: 1 sha256: "ce03b3583ccf9c32" --- # ViewModel ### Purpose This module provides the `DockPanelHorizontalViewModel` class, a Prism-based ViewModel for a horizontal dock panel UI component in the DTS Viewer application. It serves as a mediator between the view (`IDockPanelHorizontalView`) and the application infrastructure, handling notification requests via Prism's `InteractionRequest` pattern and subscribing to application-wide `RaiseNotification` events. ### Public Interface **Class:** `DockPanelHorizontalViewModel` (extends `BaseViewModel`, implements `IDockPanelHorizontalViewModel`) **Constructor:** ```csharp public DockPanelHorizontalViewModel( IDockPanelHorizontalView view, IRegionManager regionManager, IEventAggregator eventAggregator, IUnityContainer unityContainer) ``` Initializes the ViewModel, sets the View's DataContext to itself, creates `NotificationRequest` and `ConfirmationRequest` instances, and subscribes to the `RaiseNotification` event. **Properties:** - `IDockPanelHorizontalView View { get; }` — The associated view instance. - `InteractionRequest NotificationRequest { get; }` — Used to raise notification dialogs. - `InteractionRequest ConfirmationRequest { get; }` — Used to raise confirmation dialogs. - `bool IsMenuIncluded { get; set; }` — UI state flag. - `bool IsNavigationIncluded { get; set; }` — UI state flag. - `bool IsBusy { get; set; }` — Indicates busy state. - `bool IsDirty { get; private set; }` — Indicates unsaved changes. **Events:** - `event PropertyChangedEventHandler PropertyChanged` — Declared but not explicitly invoked in visible code. **Methods:** - `void OnRaiseNotification(NotificationContentEventArgs eventArgsWithTitle)` — Private handler that raises `NotificationRequest` with title, message, details, and image from the event args. - `override void Initialize()` — Throws `NotImplementedException`. - `override void Initialize(object parameter)` — Throws `NotImplementedException`. - `void Initialize(object parameter, object model)` — Throws `NotImplementedException` (hides base with `new`). - `override void Activated()` — Throws `NotImplementedException`. - `override void Cleanup()` — Throws `NotImplementedException`. - `Task CleanupAsync()` — Throws `NotImplementedException` (hides base with `new`). - `override Task InitializeAsync()` — Throws `NotImplementedException`. - `override Task InitializeAsync(object parameter)` — Throws `NotImplementedException`. ### Invariants - The View's `DataContext` is always set to the ViewModel instance upon construction. - The ViewModel subscribes to `RaiseNotification` event via `EventAggregator` on construction. - `IsDirty` is read-only externally (private setter). ### Dependencies **Depends on:** - `DTS.Common.Base` (`BaseViewModel`) - `DTS.Common.Events` (`RaiseNotification`, `NotificationContentEventArgs`, `NotificationContentEventArgsWithoutTitle` — inferred from usage) - `DTS.Common.Interface` (`IViewModel`, `IDockPanelHorizontalViewModel`, `IDockPanelHorizontalView`) - `Microsoft.Practices.Prism.Events` (`IEventAggregator