65 lines
3.9 KiB
Markdown
65 lines
3.9 KiB
Markdown
---
|
||
source_files:
|
||
- Common/DTS.CommonCore/Resources/ResourceNames.cs
|
||
- Common/DTS.CommonCore/Resources/MainTabControlResource.xaml.cs
|
||
generated_at: "2026-04-16T02:12:32.595603+00:00"
|
||
model: "Qwen/Qwen3-Coder-Next-FP8"
|
||
schema_version: 1
|
||
sha256: "37911183d8b2e17a"
|
||
---
|
||
|
||
# Resources
|
||
|
||
## Documentation: Resource Definitions and UI Event Handling
|
||
|
||
---
|
||
|
||
### 1. Purpose
|
||
This module provides centralized string constants for storyboard resource names used in UI transitions and a partial class implementing a tooltip event handler for help text propagation in the WPF UI layer. Specifically, `ResourceNames` defines stable identifiers for entry/exit transition storyboards, while `MainTabControlResource` facilitates contextual help by publishing `HelpTextEvent` events via Prism’s `IEventAggregator` when tooltips are invoked.
|
||
|
||
---
|
||
|
||
### 2. Public Interface
|
||
|
||
#### `ResourceNames` (internal static class)
|
||
- **`EntryStoryboardName`** (`public const string`)
|
||
Value: `"InTransition"`. Represents the name of the storyboard used for entering a view/page.
|
||
- **`ExitStoryboardName`** (`public const string`)
|
||
Value: `"OutTransition"`. Represents the name of the storyboard used for exiting a view/page.
|
||
|
||
#### `MainTabControlResource` (public partial class)
|
||
- **`ToolTipEventHandler(object sender, ToolTipEventArgs e)`** (`public void`)
|
||
Handles `ToolTipOpening` events. Sets `e.Handled = true` to suppress default tooltip behavior, retrieves `IEventAggregator` via `ServiceLocator`, and publishes a `HelpTextEvent` with a `HelpTextEventArg` containing the original `sender` and `ToolTipEventArgs`.
|
||
|
||
---
|
||
|
||
### 3. Invariants
|
||
- `EntryStoryboardName` and `ExitStoryboardName` are compile-time constants and must not be modified at runtime.
|
||
- `ToolTipEventHandler` **must** be attached to a `ToolTipOpening` event (or similar) on a WPF control to function as intended.
|
||
- `ServiceLocator.Current` must be initialized and configured with a valid container that resolves `IEventAggregator`; otherwise, a runtime exception will occur.
|
||
- `HelpTextEventArg` constructor requires `Sender` and `E` parameters (as shown); no validation is performed beyond parameter passing.
|
||
|
||
---
|
||
|
||
### 4. Dependencies
|
||
|
||
#### This module depends on:
|
||
- **WPF**: `System.Windows.Controls.ToolTipEventArgs` and `partial class` support.
|
||
- **Prism Library**: `IEventAggregator`, `IEvent`, and `HelpTextEvent`/`HelpTextEventArg` types (not shown in source but referenced).
|
||
- **Microsoft.Practices.ServiceLocation**: `ServiceLocator` for resolving services.
|
||
- **DTS.Common.Events**: Namespace containing `HelpTextEvent` and `HelpTextEventArg` (inferred from `using DTS.Common.Events`).
|
||
|
||
#### This module is depended on by:
|
||
- UI XAML files (e.g., `MainTabControlResource.xaml`) referencing `EntryStoryboardName`/`ExitStoryboardName` as static resources.
|
||
- Event subscribers to `HelpTextEvent` (e.g., help service modules) that consume `HelpTextEventArg` to display context-sensitive help.
|
||
|
||
---
|
||
|
||
### 5. Gotchas
|
||
- **`internal` visibility**: `ResourceNames` is `internal`, so its constants are only accessible within the same assembly (likely `DTS.CommonCore`). External consumers must reference via fully qualified name *if* exposed elsewhere, but no public accessors exist.
|
||
- **Hardcoded storyboard names**: `"InTransition"` and `"OutTransition"` assume matching storyboard resources exist in XAML; mismatched names will cause silent transition failures (no compile-time check).
|
||
- **ServiceLocator usage**: Relies on the deprecated `ServiceLocator` pattern (Prism recommends constructor injection). This may complicate testing and violate DI best practices.
|
||
- **No error handling**: If `IEventAggregator` is not registered, `ServiceLocator.Current.GetInstance<IEventAggregator>()` throws an exception. No fallback or logging is present.
|
||
- **`e.Handled = true`**: Suppresses default tooltip behavior entirely—any other tooltip logic (e.g., static `ToolTip` property) will be overridden.
|
||
|
||
None identified beyond these. |