15 KiB
15 KiB
source_files, generated_at, model, schema_version, sha256
| source_files | generated_at | model | schema_version | sha256 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
2026-04-17T15:27:07.760999+00:00 | zai-org/GLM-5-FP8 | 1 | 308c9c168d87b5fd |
Documentation: DTS.Common.Converters
1. Purpose
This module provides a comprehensive library of WPF value converters (implementing IValueConverter and IMultiValueConverter) used to transform data models into UI representations within the DTS application. It bridges the gap between domain logic and presentation logic by handling conversions for data types such as Booleans, Enums, Collections, Dates, and domain-specific status objects into visual elements like Visibility, Brush (colors), Thickness, and formatted strings.
2. Public Interface
The module consists of the following classes, primarily located in the DTS.Common.Converters namespace.
Boolean Converters
BooleanToBorderThicknessConverter(IValueConverter)Convert: Returns1ifvalueistrue, otherwise2.ConvertBack: Returnsnull.
BooleanToBorderBrushConverter(IValueConverter)Convert: ReturnsBrushesAndColors.Brush_Warningifvalueistrueand not null; otherwiseBrushes.Transparent.ConvertBack: Returnsnull.
BooleanToGreenBorderConverter(IValueConverter)Convert: ReturnsBrushesAndColors.BrushApplicationStatusPowerGreenifvalueistrueand not null; otherwiseBrushes.Transparent.ConvertBack: Returnsnull.
BooleanToColorConverter(IValueConverter)- Properties:
Background(bool),Inverted(bool),AttentionBrush(bool),WarningBrush(bool). Convert: Convertsvalue(bool) to aBrush. Logic depends on configuration properties (e.g., returnsBrush_NoErrorif true,Brush_Error/Brush_Attention/Brush_Warningif false).ConvertBack: Returnsnull.
- Properties:
BooleanToItalicFontStyleConverter(IValueConverter)Convert: ReturnsFontStyles.Italicifvalueistrue; otherwiseFontStyles.Normal.ConvertBack: Returnsnull.
BooleanToOpacityConverter(IValueConverter)Convert: Returns0.5ifvalueistrue; otherwise1.ConvertBack: Returnsnull.
InverseBooleanToOpacityConverter(IValueConverter)Convert: Returns1.0ifvalueistrue; otherwise0.5.ConvertBack: Returnsnull.
InverseBooleanConverter(IValueConverter)Convert: Returns the logical negation ofvalue.ConvertBack: Returns the logical negation ofvalue.
BooleanOrMultiConverter(IMultiValueConverter)Convert: Returnstrueif any value in thevaluesarray istrue. Returnsfalseif any element is not abool.ConvertBack: ThrowsNotImplementedException.
Visibility Converters
EnumVisibilityConverter(IValueConverter)Convert: ReturnsVisibility.Visibleifvalue.Equals(parameter); otherwiseVisibility.Hidden.ConvertBack: ReturnsparameterifvalueisVisibility.Visible; otherwiseBinding.DoNothing.
InverseEnumVisibilityConverter(IValueConverter)Convert: ReturnsVisibility.Hiddenifvalue.Equals(parameter); otherwiseVisibility.Visible.ConvertBack: ReturnsparameterifvalueisVisibility.Hidden; otherwiseBinding.DoNothing.
StringListToVisibilityConverter(IValueConverter)Convert: ReturnsVisibility.Visibleif theList<string>is not null and contains elements; otherwiseVisibility.Collapsed.ConvertBack: ThrowsNotImplementedException.
ArrayVisibilityConverter(IValueConverter)Convert: ReturnsVisibility.Visibleifvalue(IList or Array) has count/length > 0; otherwiseVisibility.CollapsedorHidden.ConvertBack: Returnsnull.
BooleanAndToVisibilityMultiConverter(IMultiValueConverter)Convert: ReturnsVisibility.Visibleif all values aretrue. Supports parameter strings "FALSE" (inverts logic) and "HIDE" (uses Hidden instead of Collapsed).ConvertBack: ThrowsNotImplementedException.
BooleanOrToVisibilityMultiConverter(IMultiValueConverter)Convert: ReturnsVisibility.Visibleif any value istrue. Supports parameter strings "FALSE" and "HIDE".ConvertBack: ThrowsNotImplementedException.
VisibilityToRowHeightConverter(IValueConverter,DependencyObject)Convert: Returns0ifvalueisVisibility.Collapsed; otherwise returnsparameter. SupportsInvertSourceproperty.ConvertBack: Returnsnull.
GroupNameToVisibilityConverter(IValueConverter)Convert: ReturnsVisibility.Visibleifvalue.ToString()starts with "Graph"; otherwiseVisibility.Collapsed.ConvertBack: Returnsnull.
Enum & Status Converters
EnumBooleanConverter(IValueConverter)Convert: Returnsvalue.Equals(parameter).ConvertBack: Returnsparameterifvalueistrue; otherwiseBinding.DoNothing.
InverseEnumEnabledConverter(IValueConverter)Convert: Returnsfalseifvalue.Equals(parameter); otherwisetrue.ConvertBack: Returnsparameterifvalueisfalse; otherwiseBinding.DoNothing.
StatusToBorderThicknessConverter(IValueConverter)Convert: Returns2ifvalue(UIItemStatus) is Success, Failed, Error, or Warning; otherwise1.ConvertBack: Returnsnull.
StatusToColorConverter(IValueConverter)Convert: ConvertsUIItemStatusto a specificBrush(e.g.,Brush_ApplicationStatus_Completefor Success).ConvertBack: Returnsnull.
DASStatusColorConverter,DASStatusArmColorConverter,DASStatusArmTextConverter- Convert
DASStatusesenum to specific Brushes or Strings (e.g., "Armed", "NotArmed").
- Convert
DiagStatusShuntColorConverter,DiagStatusOffsetColorConverter- Convert
DiagStatusesto Brushes based on bitwise flag checks (&operator).
- Convert
Numeric & Comparison Converters
IsLessThanConverter/IsGreaterThanConverter(IValueConverter)Convert: Parsesvalueandparameterasdecimal. Returns result of comparison.ConvertBack: ReturnsDependencyProperty.UnsetValue.
GreaterEqualThanToBoolConverter(IValueConverter)Convert: Returnstrueifvalue >= parameter. Handlesint,double,ushort.ConvertBack: Returnsfalse.
IntervalToVisibilityConverter(IValueConverter)Convert: ReturnsVisibility.Visibleifvalue >= parameter. Handlesint,double,ushort.ConvertBack: Returnsfalse.
NonZeroToColorConverter(IValueConverter)Convert: Returns Green if string is "0", Clear if "---", otherwise Red.ConvertBack: Returnsnull.
DoubleFromThousandthUnitToBaseUnit(IValueConverter)Convert: Divides value by 1000.0.ConvertBack: Multiplies value by 1000.0.
PercentConverter(IValueConverter)Convert: Formats decimal as"{0:F1}%".ConvertBack: ThrowsNotImplementedException.
String & Text Converters
DateConverter(IValueConverter)Convert: ReturnsDateTimeif valid, otherwiseStrings.Strings.Table_NA.ConvertBack: MirrorsConvert.
DateTimeWithMillisecondsToStringConverter(IValueConverter)Convert: CallsUtils.Utils.FormatTimeStamp.ConvertBack: Returnsnull.
ListToStringConverter(IValueConverter)Convert: JoinsList<string>elements with", ".ConvertBack: ThrowsNotImplementedException.
FaultedTextConverter,TriggerTextConverter- Convert
boolto specific localized strings (e.g.,Strings.Strings.Faulted).
- Convert
FilePathsToShortStringConverter(IValueConverter)Convert: Returns filename for single path, or "MultipleFiles" string for array length > 1.
NumericStringFormatConverter(IMultiValueConverter)Convert: Takes value and format string. Returns formatted string. HandlesNaN.
EnumDescriptionTypeConverter(EnumConverter)ConvertTo: Returns theDescriptionAttributevalue of an Enum, looking up localization viaStrings.Strings.ResourceManager.
Layout & Misc Converters
HeightConverter(MarkupExtension,IValueConverter)Convert: Returnsvalue - parameter.ConvertBack: Returnsnull.- Usage: Can be instantiated directly in XAML due to
MarkupExtension.
WidthConverter(MarkupExtension,IValueConverter)Convert: Returnsvalue * parameter.ConvertBack: ThrowsNotImplementedException.
ActiveContentConverter(IValueConverter)Convert/ConvertBack: Returnsvalueif it isContentControl, elseBinding.DoNothing.
ColorToSolidColorBrushConverter(IValueConverter)Convert: Returnsnew SolidColorBrush(color).ConvertBack: ThrowsNotImplementedException.
NullableFloatConverter(IValueConverter)Convert: Returnsdoubleorfloatvalue, orstring.Empty.ConvertBack: Returnsfloatorstring.Empty.
3. Invariants
- Input Type Requirements: Many converters perform direct casts (e.g.,
(bool)valueinBooleanToBorderThicknessConverter) without null checks or type verification. The binding engine must supply the correct types, or a runtime exception will occur. - One-Way Binding: The majority of converters return
null, throwNotImplementedException, or returnBinding.DoNothingin theConvertBackmethod, indicating they are designed forOneWaybinding mode. - Parameter Usage: Several converters (e.g.,
EnumVisibilityConverter,IsLessThanConverter) rely heavily on theparameterargument passed from XAML. Omitting the parameter in the binding will result in incorrect logic or exceptions. - Null Handling: Null handling is inconsistent across the module:
BooleanToBorderBrushConverterexplicitly checks for null.BooleanToBorderThicknessConverterdoes not check for null and will throw ifvalueis null.ArrayVisibilityConverterreturnsHiddenfor null.
- Boolean Logic:
BooleanOrMultiConverterreturnsfalseif any value in the input array is not of typebool. It does not ignore non-boolean values; it fails the operation.
4. Dependencies
Internal Dependencies (Inferred from imports):
DTS.Common.Base: Used forBrushesAndColors(static resource for specific brushes) andStrings.Strings(localized string lookup).DTS.Common.Enums: DefinesUIItemStatus,RecordingModes.DTS.Common.Interface.Hardware: DefinesDiagStatuses,DASStatuses.DTS.Common.Classes.Groups: DefinesGroupImportError.Utils.Utils: Used forFormatTimeStampinDateTimeWithMillisecondsToStringConverter.
External Dependencies:
System.Windows.Data(IValueConverter,IMultiValueConverter,Binding)System.Windows.Media(Brush,Color,Brushes,SolidColorBrush)System.Windows(Visibility,DependencyProperty,DependencyObject,ContentControl)System.ComponentModel(EnumConverter,DescriptionAttribute)
5. Gotchas
- Filename/Classname Mismatch: The file
GreaterThanToBoolConverter.cscontains the classGreaterEqualThanToBoolConverter. The logic performs a>=comparison, not just>. - Copy-Paste Error in Documentation: The XML doc comment for `NullableFloat