64 lines
4.4 KiB
Markdown
64 lines
4.4 KiB
Markdown
|
|
---
|
|||
|
|
source_files:
|
|||
|
|
- Common/DTS.Common/RibbonControl/Interface/IRibbonView.cs
|
|||
|
|
- Common/DTS.Common/RibbonControl/Interface/IRibbonTabInfoProvider.cs
|
|||
|
|
- Common/DTS.Common/RibbonControl/Interface/IRibbonViewModel.cs
|
|||
|
|
generated_at: "2026-04-16T03:24:19.205461+00:00"
|
|||
|
|
model: "Qwen/Qwen3-Coder-Next-FP8"
|
|||
|
|
schema_version: 1
|
|||
|
|
sha256: "56a9616e313238db"
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Interface
|
|||
|
|
|
|||
|
|
## Documentation: RibbonControl Interface Module
|
|||
|
|
|
|||
|
|
### 1. Purpose
|
|||
|
|
This module defines foundational interfaces for the ribbon UI control layer within the DTS system. It establishes a contract-based abstraction for ribbon-related view and view model components, enabling separation of concerns between UI presentation (via `IRibbonView`) and business logic/data (via `IRibbonViewModel`), while supporting tab identification through `IRibbonTabInfoProvider`. The interfaces are part of a larger MVVM (Model-View-ViewModel) architecture, inheriting from base interfaces (`IBaseView`, `IBaseViewModel`) to ensure consistency across the application’s UI framework.
|
|||
|
|
|
|||
|
|
### 2. Public Interface
|
|||
|
|
|
|||
|
|
- **`IRibbonView`**
|
|||
|
|
```csharp
|
|||
|
|
public interface IRibbonView : IBaseView
|
|||
|
|
```
|
|||
|
|
Represents the view layer for the ribbon control. It inherits from `IBaseView`, implying it participates in the base view lifecycle and contract (e.g., data binding, lifecycle events), though its specific behavior is not defined here. No additional members beyond inheritance.
|
|||
|
|
|
|||
|
|
- **`IRibbonTabInfoProvider`**
|
|||
|
|
```csharp
|
|||
|
|
public interface IRibbonTabInfoProvider
|
|||
|
|
{
|
|||
|
|
string RibbonTabUid { get; }
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
Provides a standardized way to retrieve a unique identifier (`RibbonTabUid`) for a ribbon tab. Implementers expose this read-only property to allow consumers (e.g., tab management logic) to locate or reference a specific ribbon tab unambiguously.
|
|||
|
|
|
|||
|
|
- **`IRibbonViewModel`**
|
|||
|
|
```csharp
|
|||
|
|
public interface IRibbonViewModel : IBaseViewModel
|
|||
|
|
{
|
|||
|
|
IRibbonView View { get; }
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
Serves as the view model for the ribbon control. It enforces a strict relationship with its associated view via the `View` property, ensuring the view model always exposes its bound view instance. Inherits from `IBaseViewModel`, implying it supports base view model functionality (e.g., property change notification, command handling).
|
|||
|
|
|
|||
|
|
### 3. Invariants
|
|||
|
|
- `IRibbonView` must be implemented by a concrete view class that adheres to the `IBaseView` contract (e.g., implements `IBaseView` members like `Initialize`, `Load`, `Unload`, etc., though these are not shown here).
|
|||
|
|
- `IRibbonTabInfoProvider.RibbonTabUid` must return a non-null, non-empty string that uniquely identifies a ribbon tab within the application domain.
|
|||
|
|
- `IRibbonViewModel.View` must never return `null`; it must always reference a valid instance of a type implementing `IRibbonView`.
|
|||
|
|
- All interfaces are part of the `DTS.Common.RibbonControl` namespace and rely on `DTS.Common.Base` for base contracts (`IBaseView`, `IBaseViewModel`).
|
|||
|
|
|
|||
|
|
### 4. Dependencies
|
|||
|
|
- **Depends on**:
|
|||
|
|
- `DTS.Common.Base` (specifically `IBaseView`, `IBaseViewModel`)
|
|||
|
|
- **Depended on by**:
|
|||
|
|
- Concrete implementations of ribbon views (e.g., `RibbonView : IRibbonView`)
|
|||
|
|
- Concrete implementations of ribbon view models (e.g., `RibbonViewModel : IRibbonViewModel`)
|
|||
|
|
- Components responsible for ribbon tab management (e.g., services or controllers that consume `IRibbonTabInfoProvider` to locate tabs)
|
|||
|
|
- *Note*: The source files themselves do not indicate direct usage by other modules, but the interfaces are clearly designed for integration into a larger ribbon UI system.
|
|||
|
|
|
|||
|
|
### 5. Gotchas
|
|||
|
|
- **Ambiguity in `IBaseView`/`IBaseViewModel` contracts**: Since `IRibbonView` and `IRibbonViewModel` inherit from `IBaseView` and `IBaseViewModel` respectively, their full contract depends on definitions in `DTS.Common.Base`, which are not provided here. Behavior such as initialization order, lifecycle events, or property change semantics is assumed but not verifiable from this module alone.
|
|||
|
|
- **No explicit validation on `RibbonTabUid`**: While the documentation states `RibbonTabUid` is a unique identifier, the interface does not enforce uniqueness at compile time or runtime. Implementers must ensure uniqueness to avoid runtime tab resolution errors.
|
|||
|
|
- **No method definitions**: These interfaces are purely declarative (properties only). Any ribbon-specific logic (e.g., tab activation, command binding) is expected to be handled outside this interface layer.
|
|||
|
|
- **None identified from source alone.**
|