6.5 KiB
source_files, generated_at, model, schema_version, sha256
| source_files | generated_at | model | schema_version | sha256 | |
|---|---|---|---|---|---|
|
2026-04-16T13:49:48.286150+00:00 | zai-org/GLM-5-FP8 | 1 | f93455d3d5a535ba |
Documentation: ViewerSettingsViewModel
1. Purpose
ViewerSettingsViewModel is a Prism-based view model for the Viewer Settings module within the DTS Viewer application. It manages user-configurable settings related to calibration behaviors, handles visibility states for settings UI elements, and coordinates with parent view models via event aggregation. The class serves as the binding context for IViewerSettingsView and participates in the application's region-based navigation system.
2. Public Interface
Constructor
public ViewerSettingsViewModel(
IViewerSettingsView view,
IRegionManager regionManager,
IEventAggregator eventAggregator,
IUnityContainer unityContainer)
Initializes the view model, sets the view's DataContext to itself, and creates NotificationRequest and ConfirmationRequest interaction requests.
Methods
public override void Initialize()
Empty override. No initialization logic performed.
public override void Initialize(object parameter)
Sets Parent property from the provided parameter (cast to IBaseViewModel) and calls Subscribe() to register event handlers.
public void PublishChanges()
Empty implementation. No behavior defined in source.
Properties
| Property | Type | Description |
|---|---|---|
View |
IViewerSettingsView |
Gets/sets the associated view interface. |
Parent |
IBaseViewModel |
Gets/sets the parent view model reference. |
NotificationRequest |
InteractionRequest<Notification> |
Interaction request for notifications. |
ConfirmationRequest |
InteractionRequest<Confirmation> |
Interaction request for confirmations (hides base member with new). |
HeaderInfo |
string |
Returns constant string "SettingsRegion". |
IsBusy |
bool |
Gets/sets busy state (hides base member with new). |
IsDirty |
bool |
Gets/sets dirty state (hides base member with new). |
IsNavigationIncluded |
bool |
Gets/sets navigation inclusion flag (hides base member with new). |
CalibrationBehaviorSettingVisibility |
Visibility |
Controls visibility of calibration behavior setting UI. Publishes ViewerSettingsVisibilityChangedEvent when changed. |
OverallSettingsVisibility |
Visibility |
Computed property; returns Visibility.Visible if CalibrationBehaviorSettingVisibility is visible, otherwise Visibility.Collapsed. |
AvailableCalibrationBehaviors |
DisplayedCalibrationBehavior[] |
Lazily-initialized, thread-safe array of three calibration behavior options: _linearIfAvail, _nonLinearIfAvail, _useBothIfAvail. |
CalibrationBehaviorSetting |
DisplayedCalibrationBehavior |
Gets/sets the selected calibration behavior. Defaults to CalibrationBehaviors.NonLinearIfAvailable. Publishes CalibrationBehaviorSettingChangedEvent when changed. |
Events
public new event PropertyChangedEventHandler PropertyChanged
Hides base class event. Raised via OnPropertyChanged(string).
3. Invariants
- Default Calibration Behavior:
_calibrationBehaviorSettingis always initialized toCalibrationBehaviors.NonLinearIfAvailable. - OverallSettingsVisibility Dependency:
OverallSettingsVisibilityis alwaysVisibility.CollapsedwhenCalibrationBehaviorSettingVisibilityisVisibility.Collapsed. It cannot be visible independently. - Thread Safety:
AvailableCalibrationBehaviorsgetter uses a lock (MyLock) to ensure thread-safe lazy initialization. - CalibrationBehaviorSetting Getter: Always returns a matching
DisplayedCalibrationBehaviorfromAvailableCalibrationBehaviorsarray, ornullif no match found. - Event Subscription Timing: Subscriptions occur only after
Initialize(object parameter)is called, not in the constructor.
4. Dependencies
External Dependencies (from imports)
- Prism.Events -
IEventAggregatorfor pub/sub messaging - Prism.Regions -
IRegionManagerfor region-based navigation - Unity -
IUnityContainerfor dependency injection - DTS.Common.Base -
BaseViewModel<T>,IBaseViewModel - DTS.Common.Classes.Sensors -
DisplayedCalibrationBehavior - DTS.Common.Enums.Sensors -
CalibrationBehaviorsenum - DTS.Common.Events -
CalibrationBehaviorSettingChangedEvent,CalibrationBehaviorSettableInViewerChangedEvent,ViewerSettingsVisibilityChangedEvent - DTS.Common.Interactivity -
InteractionRequest<T>,Notification,Confirmation - DTS.Common.Interface -
IViewerSettingsViewModel - System.Windows -
Visibilityenum
Consumed Events
CalibrationBehaviorSettingChangedEvent- payload:CalibrationBehaviorsCalibrationBehaviorSettableInViewerChangedEvent- payload:bool
Published Events
CalibrationBehaviorSettingChangedEvent- published whenCalibrationBehaviorSettingsetter is invoked with a different valueViewerSettingsVisibilityChangedEvent- published whenCalibrationBehaviorSettingVisibilityis set
5. Gotchas
-
Misleading XML Documentation: The constructor's XML comment references
TestSummaryViewListModel, which appears to be a copy-paste error from another class. -
Member Hiding with
newKeyword: Multiple members (PropertyChanged,OnPropertyChanged,IsBusy,IsDirty,IsNavigationIncluded,ConfirmationRequest) hide base class members usingnew. This breaks polymorphism—consumers casting to the base type will invoke base implementations, not these overrides. -
Empty
PublishChanges()Method: The method has no implementation. Its intended purpose is unclear from source alone. -
Cascading Visibility Notifications:
OnPropertyChangedhas special logic—any property name ending with"Visibility"(except"OverallSettingsVisibility") triggers an additionalOnPropertyChanged("OverallSettingsVisibility")call. This side effect is not obvious from property setters alone. -
Potential Null Return:
CalibrationBehaviorSettinggetter returnsnullif_calibrationBehaviorSettingdoes not match any item inAvailableCalibrationBehaviors. Callers should handle this possibility. -
No Unsubscribe Logic: The class subscribes to events in
Subscribe()but does not appear to unsubscribe. Potential memory leak if view model lifecycle is shorter than the event aggregator's.