Files
DP44/docs/ai/Common/DTS.CommonCore/Dialogs.md
2026-04-17 14:55:32 -04:00

8.1 KiB

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
Common/DTS.CommonCore/Dialogs/IRegionManagerAware.cs.cs
Common/DTS.CommonCore/Dialogs/IPopupWindowActionAware.cs
Common/DTS.CommonCore/Dialogs/ConfirmationEx.cs
Common/DTS.CommonCore/Dialogs/ConfirmationWindow.xaml.cs
Common/DTS.CommonCore/Dialogs/NotificationWindow.xaml.cs
Common/DTS.CommonCore/Dialogs/PopupWindowAction.cs
Common/DTS.CommonCore/Dialogs/BrowseForFolderDialog.cs
2026-04-17T15:34:12.771311+00:00 zai-org/GLM-5-FP8 1 9007c4cfc646753a

Documentation: DTS.Common.Dialogs

1. Purpose

This module provides a WPF dialog infrastructure built on Prism's InteractionRequest pattern. It enables the display of modal and non-modal popup windows (confirmations and notifications) through trigger actions, supports region management within dialogs, and provides a Win32 wrapper for native folder selection dialogs. The module bridges Prism's MVVM-friendly interaction requests with custom WPF window implementations.


2. Public Interface

Interfaces

IRegionManagerAware

Enables objects to receive a scoped IRegionManager instance.

IRegionManager RegionManager { get; set; }

IPopupWindowActionAware

Enables objects to receive host window and notification context.

Window HostWindow { get; set; }
Notification HostNotification { get; set; }

Classes

ConfirmationEx : Confirmation

Extended confirmation with configurable buttons and imagery.

Property Type Default
Buttons MessageBoxButton MessageBoxButton.OKCancel
Image MessageBoxImage MessageBoxImage.Question
Result MessageBoxResult (unset)

ConfirmationWindow

WPF window for displaying confirmations. Removes the system close button via Win32 API.

Member Type Description
ConfirmationTemplateProperty DependencyProperty Registered for DataTemplate
ConfirmationTemplate DataTemplate Template for confirmation content
Connect(int, object) void Throws NotImplementedException

NotificationWindow : Window

WPF window for displaying notifications. Removes the system close button via Win32 API.

Member Type Description
NotificationTemplateProperty DependencyProperty Registered for DataTemplate
NotificationTemplate DataTemplate Template for notification content
ImageUriProperty DependencyProperty Registered for Uri
ImageUri Uri URI for notification image
Connect(int, object) void Empty implementation
CoppyToClibord_Click(object, RoutedEventArgs) void Sets clipboard to hardcoded string

PopupWindowAction : TriggerAction<FrameworkElement>

Trigger action that displays popup windows in response to InteractionRequestedEventArgs.

Nested Enum:

public enum WindowPositions { CenterOwner, CenterScreen }

Dependency Properties:

Property Type Default
WindowContent FrameworkElement null
ContentTemplate DataTemplate null
IsModal bool null (effectively false)
StartupPosition WindowPositions CenterScreen
CenterOverAssociatedObject bool null (legacy, unused)
AllowMultipleNotificationWindows bool null (effectively false)

Protected Methods:

  • Invoke(object parameter) — Main entry point; creates and displays the window.
  • PrepareContentForWindow(Notification, Window) — Wires up IRegionManagerAware and IPopupWindowActionAware on content and its DataContext.
  • GetWindow(Notification) — Returns either a generic window with WindowContent or a specialized window via CreateWindow.
  • CreateWindow(Notification) — Creates ConfirmationWindow or NotificationWindow based on notification type.
  • GetImageUri(PopupWindowImage) — Maps enum to pack URI for images.

BrowseForFolderDialog

Win32 SHBrowseForFolder wrapper for folder selection.

Properties:

Property Type Description
SelectedFolder string Final selected path (read-only after dialog)
Title string Dialog header text
InitialFolder string Pre-selected folder path
InitialExpandedFolder string Pre-selected and expanded folder (overrides InitialFolder)
OKButtonText string Custom OK button text
BrowseInfo BROWSEINFOW Direct access to Win32 structure
BrowserDialogFlags BrowseInfoFlags Flags for dialog behavior

Methods:

  • ShowDialog()Nullable<bool> — Shows dialog without owner.
  • ShowDialog(Window owner)Nullable<bool> — Shows dialog with WPF window owner.

Nested Types:

  • BrowseCallbackProc — Delegate for browse event handling.
  • BrowseInfoFlags — Flags enum (BIF_NEWDIALOGSTYLE, BIF_RETURNONLYFSDIRS, etc.).
  • BROWSEINFOW — Win32 structure with hwndOwner, pidlRoot, pszDisplayName, lpszTitle, ulFlags, lpfn, lParam, iImage.
  • MessageFromBrowser — Messages received from dialog (BFFM_INITIALIZED, BFFM_SELCHANGED, etc.).
  • MessageToBrowser — Messages sent to dialog (BFFM_SETSELECTIONW, BFFM_SETEXPANDED, BFFM_SETOKTEXT, etc.).

3. Invariants

  1. Window close button removal: Both ConfirmationWindow and NotificationWindow always strip the WS_SYSMENU style during SourceInitialized, removing the system close button.

  2. WindowContent parent check: PopupWindowAction.Invoke returns immediately without action if WindowContent.Parent != null.

  3. Notification type requirement: PopupWindowAction.CreateWindow returns null if the notification is not a Confirmation and notification.Content is not castable to NotificationContentEventArgs.

  4. Default browse flags: BrowseForFolderDialog always initializes with BIF_NEWDIALOGSTYLE.

  5. Scoped RegionManager: If WindowContent lacks a RegionManager, PopupWindowAction creates a new scoped RegionManager and assigns it.


4. Dependencies

External Dependencies (from imports):

  • Microsoft.Practices.Prism.RegionsIRegionManager, RegionManager
  • Microsoft.Practices.Prism.Interactivity.InteractionRequestNotification, Confirmation, InteractionRequestedEventArgs
  • System.Windows.InteractivityTriggerAction<T>
  • System.Windows — WPF core types

Internal Dependencies (inferred):

  • DTS.Common.Enums.PopupWindowImage — Enum for notification image types
  • DTS.Common.Events.NotificationContentEventArgs — Content type for notifications

Native Dependencies:

  • user32.dllSetWindowLong, GetWindowLong, SendMessageW
  • shell32.dllSHBrowseForFolderW, SHGetPathFromIDList

5. Gotchas

  1. ConfirmationWindow.Connect throws: The Connect method is implemented but throws NotImplementedException. Purpose is unclear from source—may be related to XAML compilation or an interface requirement.

  2. Hardcoded clipboard text: NotificationWindow.CoppyToClibord_Click (note typo in method name) sets clipboard to the literal string "Hello, clipboard". This appears to be debug/test code left in production.

  3. Commented-out timeout functionality: Both ConfirmationEx and PopupWindowAction contain commented-out properties and logic for dialog auto-close/timeout (Timeout, TimeoutResult, TimeoutInterval). This feature was partially implemented but disabled.

  4. Legacy CenterOverAssociatedObject property: The CenterOverAssociatedObjectProperty is registered but its usage in Invoke is commented out. StartupPosition is the current mechanism.

  5. Default dependency property values: IsModal and AllowMultipleNotificationWindows default to null (via PropertyMetadata(null)), which boxes to false when cast. This is unconventional—typically defaults are explicit false.

  6. Image path relies on assembly structure: GetImageUri constructs pack URIs expecting images in an Images/ folder within the executing assembly. Relocation of image resources will break this.