--- source_files: - Common/DTS.Common/Base/View/BaseWindow.cs - Common/DTS.Common/Base/View/BaseView.cs generated_at: "2026-04-17T16:07:30.415930+00:00" model: "zai-org/GLM-5-FP8" schema_version: 1 sha256: "e97fdb071f87771a" --- # View ### Purpose This module defines base classes for views in a WPF/Prism application. `BaseWindow` and `BaseView` provide common properties (`IsDirty`, `HeaderInfo`) that delegate to their respective DataContext interfaces, enabling consistent dirty-tracking and header display across windows and user controls. ### Public Interface **BaseWindow** (extends `Window`, implements `IBaseWindow`) - `public bool IsDirty { get; }` — Returns `true` if `DataContext` implements `IBaseWindowModel` and `baseWindowModel.IsDirty` is `true`; otherwise returns `false`. - `public string HeaderInfo { get; }` — Returns `iHeaderInfoProvider.HeaderInfo` if `DataContext` implements `IHeaderInfoProvider`; otherwise returns `string.Empty`. **BaseView** (extends `UserControl`, implements `IBaseView`) - `public bool IsDirty { get; }` — Returns `true` if `DataContext` implements `IBaseViewModel` and `baseViewModel.IsDirty` is `true`; otherwise returns `false`. - `public string HeaderInfo { get; }` — Returns `headerInfoProvider.HeaderInfo` if `DataContext` implements `IHeaderInfoProvider`; otherwise returns `string.Empty`. ### Invariants - Both `IsDirty` and `HeaderInfo` properties are read-only getters with no setters. - If `DataContext` is `null`, both properties return default values (`false` for `IsDirty`, `string.Empty` for `HeaderInfo`). - `BaseWindow.IsDirty` checks for `IBaseWindowModel`; `BaseView.IsDirty` checks for `IBaseViewModel` — these are different interfaces. ### Dependencies - **Depends on**: `System.Windows` (`Window`), `System.Windows.Controls` (`UserControl`), `DTS.Common.Base` (interfaces `IBaseWindow`, `IBaseView`, `IBaseWindowModel`, `IBaseViewModel`, `IHeaderInfoProvider` — inferred from usage). - **Depended on by**: Unclear from source alone—likely used as base classes for specific views/windows throughout the application. ### Gotchas - **Interface mismatch**: `BaseWindow.IsDirty` checks for `IBaseWindowModel` while `BaseView.IsDirty` checks for `IBaseViewModel`. If a DataContext implements the wrong interface for the container type, `IsDirty` will incorrectly return `false`. - **Namespace directive**: Source includes `// ReSharper disable once CheckNamespace` suggesting the file location may not match the declared namespace `DTS.Common.Base`. ---