VOOZH about

URL: https://www.nuget.org/packages/CP.Xaml.Converters/

⇱ NuGet Gallery | CP.Xaml.Converters 1.1.3




👁 Image
CP.Xaml.Converters 1.1.3

dotnet add package CP.Xaml.Converters --version 1.1.3
 
 
NuGet\Install-Package CP.Xaml.Converters -Version 1.1.3
 
 
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="CP.Xaml.Converters" Version="1.1.3" />
 
 
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="CP.Xaml.Converters" Version="1.1.3" />
 
Directory.Packages.props
<PackageReference Include="CP.Xaml.Converters" />
 
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add CP.Xaml.Converters --version 1.1.3
 
 
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: CP.Xaml.Converters, 1.1.3"
 
 
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package CP.Xaml.Converters@1.1.3
 
 
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=CP.Xaml.Converters&version=1.1.3
 
Install as a Cake Addin
#tool nuget:?package=CP.Xaml.Converters&version=1.1.3
 
Install as a Cake Tool
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

XamlConverters

Converters for WPF (.NET Framework 4.6.2 / .NET 8 / .NET 9)

👁 Nuget
👁 Nuget

A rich collection of ready-to-use value & multi-value converters for WPF plus some numeric markup extensions.


Install

PM> Install-Package CP.Xaml.Converters

Quick Start (All Converters at Once)

<Application x:Class="App" ...
 xmlns:converters="https://github.com/ChrisPulman/XamlConverters">
 <Application.Resources>
 <converters:ConvertersDictionary />
 </Application.Resources>
</Application>

Use in bindings:

<TextBlock Text="{Binding Title, Converter={StaticResource ToUpperConverter}}"/>

Lightweight Usage (Singletons)

Some frequently used stateless converters are exposed through ConvertersRegistry so you can avoid resource keys:

xmlns:c="clr-namespace:CP.Xaml.Converters"
<TextBlock Visibility="{Binding IsBusy, Converter={x:Static c:ConvertersRegistry.BoolToVisibility}}"/>

Available singletons (see ConvertersRegistry.cs): Not, BoolToVisibility, BoolToVisibilityAdv, NotNullToVisibility, NotNullToBool, NullToBool, NullCoalesce, InvertVisibility, BgToReadable, Percentage, Arithmetic, Math, Equality, Comparison, And, Or, Xor, MultiFormat.


Markup Numeric Extensions

Allow inline numeric objects in XAML without x:Static:

xmlns:c="clr-namespace:CP.Xaml.Converters"
<Setter Property="Tag" Value="{c:Int32 42}"/>
<Setter Property="Tag" Value="{c:Double 2.5}"/>

Available: Int16, Int32, Single (float), Double.


Converter Catalogue

(Each listed as Resource Key = Class Name when using ConvertersDictionary)

Arithmetic & Math

  • ArithmeticConverter – Parameter: simple expression "<op><number>" e.g. "+5", "-2", "*3", "/10". Works with int/double.
    <TextBlock Text="{Binding Count, Converter={StaticResource ArithmeticConverter}, ConverterParameter='*2'}"/>
    
  • MathConverter – Parameter: arithmetic expression over one or many bound values. Single binding uses value as {0}/x; MultiBinding supports {0},{1}… or a,b,c,d.
    
    <TextBlock>
     <TextBlock.Text>
     <MultiBinding Converter="{StaticResource MathConverter}" ConverterParameter="({0} * {1}) / 100">
     <Binding Path="Base"/>
     <Binding Path="Percent"/>
     </MultiBinding>
     </TextBlock.Text>
    </TextBlock>
    
  • PercentageConverter – Parameter: either "50%" or decimal factor "0.5" multiplies numeric value.
    <RowDefinition Height="{Binding ActualWidth, ElementName=Root, Converter={StaticResource PercentageConverter}, ConverterParameter=25%}" />
    
  • MultiplierConverter – Parameter: numeric factor; ConvertBack divides.
    <Rectangle Width="{Binding BaseWidth, Converter={StaticResource MultiplierConverter}, ConverterParameter=1.5}"/>
    
  • ValueGtXConverter – Rounds double to 1 decimal place if > parameter else 2.
    <TextBlock Text="{Binding Speed, Converter={StaticResource ValueGtXConverter}, ConverterParameter=40}"/>
    
  • ValueGreaterThanXToBoolConverter / ValueLessThanXToBoolConverter – Parameter: threshold (default 0). Returns bool. ConvertBack adjusts relative to threshold.
    <CheckBox IsChecked="{Binding ItemsCount, Converter={StaticResource ValueGreaterThanXToBoolConverter}, ConverterParameter=5}" Content=">5?"/>
    
  • IsGreaterThanOrEqualToConverter – (a) Single binding + parameter (b) MultiBinding with two inputs.
    <CheckBox IsChecked="{Binding Value, Converter={StaticResource IsGreaterThanOrEqualToConverter}, ConverterParameter=100}"/>
    

Boolean Logic / Aggregation

  • BoolNegationConverter – Inverts bool.
  • MultiBooleanAndConverter – MultiBinding; optional parameter "invert".
  • MultiBooleanOrConverter – MultiBinding; optional parameter "invert".
  • BooleanXorConverter – MultiBinding exclusive OR (true if odd number true).
  • InverseValueToBoolConverter – True if numeric ⇐ 0.
  • NullToBoolConverter – Use NullToBoolConverter.IsNull or .NotNull static singletons; or set ReturnTrueIfNull property in XAML.
  • ValueNotNullToBoolConverter – Parameter: "reverse" or "true" to invert.
  • ObjectEqualsParameterConverter – Parameter: string to compare; prefix ! to invert.
  • EqualityConverter – Parameter: value to compare; prefix ! to invert.
  • ComparisonConverter – Parameter: comparison expression e.g. ">5", "<= 10", "!=X", "!>=3" (leading ! inverts result). Works with numeric or string.
  • EnumToBooleanConverter – Parameter: enum member name; useful for RadioButtons.
    <RadioButton Content="Large" IsChecked="{Binding Size, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter=Large}"/>
    

Visibility

  • BoolToVisibilityConverter – Parameter: "reverse" or "true" to invert.
  • BoolToVisibilityAdvancedConverter – Parameter tokens: ! (invert), H (Hidden instead of Collapsed). Examples: "!H", "H".
  • BoolToVisibilityConverterNegate – Opposite of normal: true ⇒ Collapsed/Hidden, false ⇒ Visible. Parameter: "hidden" to use Hidden.
  • InvertVisibilityConverter – Toggles Visible ↔ Collapsed (parameter containing "hidden" toggles Visible ↔ Hidden).
  • IntToVisibilityConverter – Shows when int > 0. Parameter: "hidden" to hide instead of collapse.
  • ValueNotNullToVisibilityConverter – Parameter: "reverse" or "true" to invert.
  • NullToVisibilityConverter – Shows when null; parameter "inverse" reverses.
  • StringNullOrEmptyToVisibilityConverter – Collapses when null/empty. Parameter: "invert", "hidden", or "hiddeninvert".
  • CollectionSizeToVisibilityConverter – Parameter: either integer exact size OR "reverse" (see CollectionSizeToBoolConverter). Shows when size matches.
  • CountToVisibilityConverter – Parameter: comparison expression like ">0", "==0", may append H to use Hidden (e.g. ">0H").
  • ValueCompareVisibilityConverter – Shows when numeric > 0 (Hidden when ⇐0).
  • VisibilityFromNumberConverter – Parameter: integer threshold; Visible when value >= threshold.
  • VisibilityFromNumberEqualsConverter – Visible when value == parameter.
  • ZeroToVisibilityConverter – Visible when value == 0.

Collection Size / Count

  • CollectionSizeToBoolConverter – Parameter: integer required size OR "reverse". True when count equals size (default 0).
  • CountToBooleanConverter – Parameter: comparison (>,>=,<,<=,==,!=) e.g. ">0" (default >0 if omitted).
    <CheckBox IsChecked="{Binding Items, Converter={StaticResource CountToBooleanConverter}, ConverterParameter='>5'}" Content=">5 Items"/>
    

Text & Formatting

  • ToUpperConverter / ToLowerConverter – Case conversion.
  • MultiStringFormatConverter – MultiBinding; parameter is composite format string: "{0} - {1:0.00} ({2})".
    <TextBlock>
     <TextBlock.Text>
     <MultiBinding Converter="{StaticResource MultiStringFormatConverter}" ConverterParameter="{0} - {1:0.0} ({2})">
     <Binding Path="Name"/>
     <Binding Path="Price"/>
     <Binding Path="Code"/>
     </MultiBinding>
     </TextBlock.Text>
    </TextBlock>
    
  • NullCoalesceConverter – If bound value is null/empty string returns ConverterParameter (fallback).
    <TextBlock Text="{Binding Description, Converter={StaticResource NullCoalesceConverter}, ConverterParameter='(none)'}"/>
    
  • BoolToStringTickCrossConverter – true ⇒ "P", false ⇒ "O" (style with a symbol font if desired).

Colors / Brushes

  • BackgroundColorToBwForegroundConverter – Input background hex (#RRGGBB) → White or Black foreground for readability.
  • HexStringToColorConverter – Accepts #RRGGBB or RRGGBB returns Color.
  • HexStringToSolidColorBrushConverter – Same but returns SolidColorBrush.
  • ColorToBrushConverter – Hex/String Color → SolidColorBrush.
  • BrushToColorConverter – Brush/Color → Color (or Red fallback).
  • FallbackBrushConverter – Brush or Color; fallback is Red.
  • ValueToBrushConverter – Parameter optional tokens: contains "BackPressure" or "Pressure" to choose palette; default DarkGreen if value>0 else LightYellow.
  • ValueCompareVisibilityConverter (see Visibility) – also for numeric state color with Hidden.
  • LineStrokeLevelConverter – Parameter: "low-high" (e.g. "50-80"). Returns Lime (<low), Yellow (>=low), Red (>=high).
  • ValueGtXConverter – Rounds numeric (see above) – helpful for numeric UI formatting.

Numeric / Layout

  • IntToThicknessConverter – Optionally sets specific sides via instance variants (BottomOnly, LeftOnly, etc.) when using registry or custom resource. Parameter may be a base Thickness.
    <Border Padding="{Binding Spacer, Converter={StaticResource IntToThicknessConverter}, ConverterParameter='4,2,4,2'}"/>
    
  • ThicknessUniformConverter – Parameter tokens control sides: L,R,T,B or H (Left+Right), V (Top+Bottom). Empty ⇒ all sides.
    <Border Padding="{Binding Gap, Converter={StaticResource ThicknessUniformConverter}, ConverterParameter=HV}"/>
    
  • MultiplierConverter / PercentageConverter – see Arithmetic section.
  • InvertSignConverter / InvertValueConverter – Negate numeric; InvertSignConverter coerces to target type.
  • DoubleToCurrencyStringConverter – Formats double/decimal to currency using current culture.
  • ValueCompareVisibilityConverter – Numeric ⇐0 hidden else visible.
  • InverseValueToBoolConverter – Numeric ⇐0 ⇒ true.

Type / Object Info

  • ObjectToTypeNameConverter – Parameter: "full" for full type name.
  • ObjectEqualsParameterConverter / EqualityConverter / ComparisonConverter – See Boolean section.
  • EnumConverter – Parameter: Type (x:Type) to parse a string value to enum.
    <ComboBox SelectedValue="{Binding SelectedStatus}" SelectedValuePath="Tag">
     <ComboBoxItem Content="Open" Tag="{Binding 'Open', Converter={StaticResource EnumConverter}, ConverterParameter={x:Type local:TicketStatus}}"/>
    </ComboBox>
    

Chaining Converters

Use MultiConverter to pipe the output of one into the next:

<converters:MultiConverter x:Key="InvertVisibilityChain">
 <converters:BoolNegationConverter/>
 <converters:BoolToVisibilityConverter/>
</converters:MultiConverter>
<TextBlock Visibility="{Binding IsClosed, Converter={StaticResource InvertVisibilityChain}}"/>

MultiBinding Boolean Examples


<TextBlock Text="Ready" Visibility="{Binding Path=., Converter={x:Static c:ConvertersRegistry.BoolToVisibility}}">
 <TextBlock.Visibility>
 <MultiBinding Converter="{x:Static c:ConvertersRegistry.And}">
 <Binding Path="IsLoaded"/>
 <Binding Path="IsValid"/>
 <Binding Path="HasPermission"/>
 </MultiBinding>
 </TextBlock.Visibility>
</TextBlock>

Error & Edge Notes

  • Many converters throw if value types mismatch (fail fast). Ensure proper binding types.
  • MathConverter caches parsed expressions internally.
  • Comparison expressions (ComparisonConverter / CountToBooleanConverter) ignore malformed parameters and return default semantics.
  • Some visibility converters support Hidden vs Collapsed selection via parameter tokens (H / hidden).

Minimal Example Window

<Window ... xmlns:conv="https://github.com/ChrisPulman/XamlConverters">
 <Window.Resources>
 <conv:ConvertersDictionary />
 </Window.Resources>
 <StackPanel Margin="20" DataContext="{Binding SampleViewModelInstance}">
 <TextBlock Text="{Binding Title, Converter={StaticResource ToUpperConverter}}"/>
 <TextBlock Text="{Binding Amount, Converter={StaticResource DoubleToCurrencyStringConverter}}"/>
 <ProgressBar Value="{Binding Progress}" Maximum="100" Height="20"/>
 <TextBlock Text="{Binding Progress, Converter={StaticResource ArithmeticConverter}, ConverterParameter='*2'}"/>
 <TextBlock Foreground="{Binding HexColour, Converter={StaticResource BackgroundColorToBwForegroundConverter}}"
 Background="{Binding HexColour, Converter={StaticResource HexStringToSolidColorBrushConverter}}"
 Text="Contrast Demo" Padding="8"/>
 <CheckBox Content="Is Active" IsChecked="{Binding IsActive}"/>
 <TextBlock Text="Active" Visibility="{Binding IsActive, Converter={StaticResource BoolToVisibilityConverter}}"/>
 </StackPanel>
</Window>

Contributing

PRs welcome. Please keep converters small, focused, documented and unit-tested.


License

MIT


XamlConverters - By Chris Pulman - Empowering Industrial Automation with Reactive Technology ⚡🏭

Product Versions Compatible and additional computed target framework versions.
.NET net8.0-windows7.0 net8.0-windows7.0 is compatible.  net9.0-windows net9.0-windows was computed.  net9.0-windows7.0 net9.0-windows7.0 is compatible.  net10.0-windows net10.0-windows was computed. 
.NET Framework net472 net472 is compatible.  net48 net48 was computed.  net481 net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETFramework 4.7.2

  • net8.0-windows7.0

    • No dependencies.
  • net9.0-windows7.0

    • No dependencies.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on CP.Xaml.Converters:

Package Downloads
CrissCross.WPF.UI

A Reactive Navigation Framework for ReactiveUI

CrissCross.WPF.Plot

A Reactive Navigation Framework for ReactiveUI

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.3 1,618 9/11/2025
1.0.2 1,022 1/20/2024
1.0.1 248 1/10/2024
1.0.0 220 1/10/2024

Compatability with Net 6/7/8 and netstandard2.0