init
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
---
|
||||
source_files:
|
||||
- Common/DTS.CommonCore/RibbonControl/Interface/IRibbonView.cs
|
||||
- Common/DTS.CommonCore/RibbonControl/Interface/IRibbonTabInfoProvider.cs
|
||||
- Common/DTS.CommonCore/RibbonControl/Interface/IRibbonViewModel.cs
|
||||
generated_at: "2026-04-16T02:47:28.313603+00:00"
|
||||
model: "Qwen/Qwen3-Coder-Next-FP8"
|
||||
schema_version: 1
|
||||
sha256: "05cab94a48e0b14d"
|
||||
---
|
||||
|
||||
# Interface
|
||||
|
||||
## Documentation: Ribbon Control Interface Module
|
||||
|
||||
### 1. Purpose
|
||||
This module defines core interfaces for the ribbon control UI component within the DTS.CommonCore library. It establishes a contract-based abstraction layer for ribbon-related view and view model components, enabling separation of concerns in a MVVM (Model-View-ViewModel) architecture. Specifically, it provides interfaces for identifying ribbon tabs (`IRibbonTabInfoProvider`), representing the ribbon view (`IRibbonView`), and managing the ribbon view model (`IRibbonViewModel`). These interfaces facilitate testability, modularity, and decoupling between UI presentation and business logic in applications using the ribbon control.
|
||||
|
||||
### 2. Public Interface
|
||||
|
||||
- **`IRibbonView`**
|
||||
```csharp
|
||||
public interface IRibbonView : IBaseView { }
|
||||
```
|
||||
A marker interface extending `IBaseView`. Represents the view layer for the ribbon control. No additional members are defined; consumers are expected to interact with the concrete implementation directly or via other interfaces (e.g., `IRibbonViewModel.View`).
|
||||
|
||||
- **`IRibbonTabInfoProvider`**
|
||||
```csharp
|
||||
public interface IRibbonTabInfoProvider
|
||||
{
|
||||
string RibbonTabUid { get; }
|
||||
}
|
||||
```
|
||||
Provides a unique identifier (`RibbonTabUid`) for a ribbon tab. Intended to be implemented by objects (e.g., view models or data objects) that need to be associated with or located by a specific ribbon tab.
|
||||
|
||||
- **`IRibbonViewModel`**
|
||||
```csharp
|
||||
public interface IRibbonViewModel : IBaseViewModel
|
||||
{
|
||||
IRibbonView View { get; }
|
||||
}
|
||||
```
|
||||
Represents the view model for the ribbon control. Exposes the associated `IRibbonView` instance via the `View` property. Extends `IBaseViewModel`, implying standard MVVM behaviors (e.g., property change notification, likely via `INotifyPropertyChanged`).
|
||||
|
||||
### 3. Invariants
|
||||
- `IRibbonTabInfoProvider.RibbonTabUid` must return a non-null, non-empty string that uniquely identifies the ribbon tab within the application context.
|
||||
- `IRibbonViewModel.View` must return a non-null reference to an object implementing `IRibbonView`.
|
||||
- `IRibbonView` must be instantiated and assigned to `IRibbonViewModel.View` before the view model is used in UI binding or presentation.
|
||||
- All interfaces inherit from base interfaces (`IBaseView`, `IBaseViewModel`), implying adherence to their respective contracts (e.g., lifecycle management, state handling), though specifics are not defined in this module.
|
||||
|
||||
### 4. Dependencies
|
||||
- **Depends on**:
|
||||
- `DTS.Common.Base` namespace (specifically `IBaseView` and `IBaseViewModel`).
|
||||
- **Depended upon by**:
|
||||
- Likely consumed by higher-level ribbon control implementations (e.g., concrete view/view model classes, UI frameworks, or DI containers) not visible in this source.
|
||||
- `IRibbonTabInfoProvider` is presumably used by ribbon tab management logic (e.g., tab lookup, selection, or rendering systems).
|
||||
- `IRibbonViewModel` is likely implemented by ribbon-specific view models and consumed by UI frameworks (e.g., WPF, WinUI) or view resolution systems.
|
||||
|
||||
### 5. Gotchas
|
||||
- `IRibbonView` is a *marker interface* with no members; consumers must rely on concrete implementations or other interfaces (e.g., via reflection or casting) for functionality.
|
||||
- The `RibbonTabUid` property in `IRibbonTabInfoProvider` has no validation or formatting constraints documented—implementation consistency (e.g., GUIDs, case sensitivity) must be enforced externally.
|
||||
- No explicit threading or lifecycle guarantees are specified for `IRibbonViewModel.View` (e.g., thread affinity, disposal pattern).
|
||||
- The module provides no mechanism for tab registration, ordering, or hierarchy—these concerns are outside its scope.
|
||||
- None of the interfaces define methods for tab manipulation (e.g., add/remove), suggesting such logic resides elsewhere (e.g., in a ribbon controller or service).
|
||||
Reference in New Issue
Block a user