Chapter.Net.WPF.Converters 1.1.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Chapter.Net.WPF.Converters --version 1.1.0                
NuGet\Install-Package Chapter.Net.WPF.Converters -Version 1.1.0                
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="Chapter.Net.WPF.Converters" Version="1.1.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Chapter.Net.WPF.Converters --version 1.1.0                
#r "nuget: Chapter.Net.WPF.Converters, 1.1.0"                
#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.
// Install Chapter.Net.WPF.Converters as a Cake Addin
#addin nuget:?package=Chapter.Net.WPF.Converters&version=1.1.0

// Install Chapter.Net.WPF.Converters as a Cake Tool
#tool nuget:?package=Chapter.Net.WPF.Converters&version=1.1.0                

Chapter.Net.WPF.Converters Library

Overview

Chapter.Net.WPF.Converters provides a bunch of useful converters to be used in XAMLs.

Features

  • BooleanToIntegerConverter: Converts an boolean to its integer representation and back.
  • BooleanToVisibilityInvertedConverter: Converts true to Visible false to Collapsed. (The opposite of BooleanToVisibilityConverter).
  • ConcatenateStringConverter Concatenates a given list of objects to a single string with a separator.
  • CountToBooleanConverter: Converts a count to its boolean representation.
  • CountToVisibilityConverter: Converts a count to its visibility representation.
  • DateOnlyToStringConverter: Converts the given date only to a string by Format.
  • DateTimeToStringConverter: Converts the given date time to a string by Format.
  • DateTimeUtcConverter: Converts the given date time to universal or local time.
  • DoubleValueToThicknessConverter: Converts a value to a thickness by telling for what that value it.
  • EqualsToBooleanConverter: Equals two values and returns its result.
  • EqualsToVisibilityConverter: Equals two values and returns its visibility representation.
  • IntegerToBooleanConverter: Converts an integer to its boolean representation and back.
  • InverseBooleanConverter: Converts a boolean to is opposite.
  • IsLastItemInListConverter: Checks if the given item container is the last in the list.
  • MultiBooleanToBooleanConverter Merges a bunch of booleans to a single boolean.
  • MultiBooleanToVisibilityConverter Merges a bunch of booleans to a single visibility representation.
  • MultiEqualsToBooleanConverter: Equals multiple values and returns its result.
  • MultiEqualsToVisibilityConverter: Equals multiple values and returns its visibility representation.
  • MultiValueToPathConverter: Combines all given strings into a path.
  • MultiValueToThicknessConverter: Creates a new thickness object by the given values.
  • NullToBooleanConverter: Converts the null or not null value to bool with an optional direction parameter.
  • NullToVisibilityConverter: Converts the null or not null value to Visibility with an optional direction parameter.
  • PathToStringConverter: Converts a full path to a section from it.
  • TimeOnlyToStringConverter: Converts the given time only to a string by Format.

Getting Started

  1. Installation:

    • Install the Chapter.Net.WPF.Converters library via NuGet Package Manager:
    dotnet add package Chapter.Net.WPF.Converters
    
  2. BooleanToIntegerConverter:

    • Usage
    <converters:BooleanToIntegerConverter x:Key="BooleanToIntegerConverter" />
    
    <controls:TitledItem Title="BooleanToIntegerConverter">
        <StackPanel Orientation="Horizontal">
            <CheckBox x:Name="checked1" Content="Checked" />
            <TextBlock Margin="10,0" Text="-&gt;" />
            <TextBlock Text="{Binding IsChecked, ElementName=checked1, Converter={StaticResource BooleanToIntegerConverter}}" />
        </StackPanel>
    </controls:TitledItem>
    
  3. BooleanToVisibilityInvertedConverter:

    • Usage
    <converters:BooleanToVisibilityInvertedConverter x:Key="BooleanToVisibilityInvertedConverter" />
    
    <controls:TitledItem Title="BooleanToVisibilityInvertedConverter">
        <StackPanel Orientation="Horizontal">
            <CheckBox x:Name="checked2" Content="Checked" />
            <TextBlock Margin="10,0" Text="-&gt;" />
            <TextBlock Text="{Binding IsChecked, ElementName=checked2, Converter={StaticResource BooleanToVisibilityInvertedConverter}}" />
        </StackPanel>
    </controls:TitledItem>
    
  4. ConcatenateStringConverter:

    • Usage
    <converters:ConcatenateStringConverter x:Key="ConcatenateStringConverter" Separator="." />
    
    <controls:TitledItem Title="ConcatenateStringConverter">
        <StackPanel Orientation="Horizontal">
            <StackPanel>
                <TextBox Width="100" Text="{Binding Text7, UpdateSourceTrigger=PropertyChanged}" />
                <TextBox Width="100" Text="{Binding Text8, UpdateSourceTrigger=PropertyChanged}" />
                <TextBox Width="100" Text="{Binding Text9, UpdateSourceTrigger=PropertyChanged}" />
            </StackPanel>
            <TextBlock Margin="10,0"
                        VerticalAlignment="Center"
                        Text="-&gt;" />
            <TextBlock VerticalAlignment="Center">
                <TextBlock.Text>
                    <MultiBinding Converter="{StaticResource ConcatenateStringConverter}">
                        <Binding Path="Text7" />
                        <Binding Path="Text8" />
                        <Binding Path="Text9" />
                    </MultiBinding>
                </TextBlock.Text>
            </TextBlock>
        </StackPanel>
    </controls:TitledItem>
    
  5. CountToBooleanConverter:

    • Usage
    <converters:CountToBooleanConverter x:Key="CountToBooleanConverter" />
    
    <controls:TitledItem Title="CountToBooleanConverter">
        <StackPanel Orientation="Horizontal">
            <TextBox Width="30" Text="{Binding Integer1, UpdateSourceTrigger=PropertyChanged}" />
            <TextBlock Margin="10,0" Text="-&gt;" />
            <TextBlock Text="{Binding Integer1, Converter={StaticResource CountToBooleanConverter}}" />
        </StackPanel>
    </controls:TitledItem>
    
  6. CountToVisibilityConverter:

    • Usage
    <converters:CountToVisibilityConverter x:Key="CountToVisibilityConverter" />
    
    <controls:TitledItem Title="CountToVisibilityConverter">
        <StackPanel Orientation="Horizontal">
            <TextBox Width="30" Text="{Binding Integer2, UpdateSourceTrigger=PropertyChanged}" />
            <TextBlock Margin="10,0" Text="-&gt;" />
            <TextBlock Text="{Binding Integer2, Converter={StaticResource CountToVisibilityConverter}}" />
        </StackPanel>
    </controls:TitledItem>
    
  7. DateOnlyToStringConverter:

    • Usage
    <converters:DateOnlyToStringConverter x:Key="DateOnlyToStringConverter" Format="LongDateString" />
    
    <controls:TitledItem Title="DateOnlyToStringConverter">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="LongDateString" />
            <TextBlock Margin="10,0" Text="-&gt;" />
            <TextBlock Text="{Binding DateOnly1, Converter={StaticResource DateOnlyToStringConverter}}" />
        </StackPanel>
    </controls:TitledItem>
    
  8. DateTimeToStringConverter:

    • Usage
    <converters:DateTimeToStringConverter x:Key="DateTimeToStringConverter" Format="FullDateTimePattern" />
    
    <controls:TitledItem Title="DateTimeToStringConverter">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="FullDateTimePattern" />
            <TextBlock Margin="10,0" Text="-&gt;" />
            <TextBlock Text="{Binding DateTime1, Converter={StaticResource DateTimeToStringConverter}}" />
        </StackPanel>
    </controls:TitledItem>
    
  9. DateTimeUtcConverter:

    • Usage
    <converters:DateTimeUtcConverter x:Key="DateTimeUtcConverter" ToUniversalTime="True" />
    
    <controls:TitledItem Title="DateTimeUtcConverter">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="ToUniversalTime" />
            <TextBlock Margin="10,0" Text="-&gt;" />
            <TextBlock Text="{Binding DateTime1, Converter={StaticResource DateTimeUtcConverter}}" />
        </StackPanel>
    </controls:TitledItem>
    
  10. DoubleValueToThicknessConverter:

    • Usage
    <converters:DoubleValueToThicknessConverter x:Key="DoubleValueToThicknessConverter" Position="LeftRight" />
    
    <controls:TitledItem Title="DoubleValueToThicknessConverter">
        <StackPanel Orientation="Horizontal">
            <TextBox Width="30" Text="{Binding Double1, UpdateSourceTrigger=PropertyChanged}" />
            <TextBlock Margin="10,0" Text="-&gt;" />
            <TextBlock Text="{Binding Double1, Converter={StaticResource DoubleValueToThicknessConverter}}" />
        </StackPanel>
    </controls:TitledItem>
    
  11. EqualsToBooleanConverter:

    • Usage
    <converters:EqualsToBooleanConverter x:Key="EqualsToBooleanConverter" />
    
    <controls:TitledItem Title="EqualsToBooleanConverter">
        <StackPanel Orientation="Horizontal">
            <TextBox Width="50" Text="{Binding Text1, UpdateSourceTrigger=PropertyChanged}" />
            <TextBlock Margin="10,0" Text="-&gt;" />
            <TextBlock Text="{Binding Text1, ConverterParameter=demo, Converter={StaticResource EqualsToBooleanConverter}}" />
        </StackPanel>
    </controls:TitledItem>
    
  12. EqualsToVisibilityConverter:

    • Usage
    <converters:EqualsToVisibilityConverter x:Key="EqualsToVisibilityConverter" />
    
    <controls:TitledItem Title="EqualsToVisibilityConverter">
        <StackPanel Orientation="Horizontal">
            <TextBox Width="50" Text="{Binding Text2, UpdateSourceTrigger=PropertyChanged}" />
            <TextBlock Margin="10,0" Text="-&gt;" />
            <TextBlock Text="{Binding Text2, ConverterParameter=demo, Converter={StaticResource EqualsToVisibilityConverter}}" />
        </StackPanel>
    </controls:TitledItem>
    
  13. IntegerToBooleanConverter:

    • Usage
    <converters:IntegerToBooleanConverter x:Key="IntegerToBooleanConverter" />
    
    <controls:TitledItem Title="IntegerToBooleanConverter">
        <StackPanel Orientation="Horizontal">
            <TextBox Width="30" Text="{Binding Integer3, UpdateSourceTrigger=PropertyChanged}" />
            <TextBlock Margin="10,0" Text="-&gt;" />
            <TextBlock Text="{Binding Integer3, Converter={StaticResource IntegerToBooleanConverter}}" />
        </StackPanel>
    </controls:TitledItem>
    
  14. InverseBooleanConverter:

    • Usage
    <converters:InverseBooleanConverter x:Key="InverseBooleanConverter" />
    
    <controls:TitledItem Title="InverseBooleanConverter">
        <StackPanel Orientation="Horizontal">
            <CheckBox x:Name="checked3" Content="Checked" />
            <TextBlock Margin="10,0" Text="-&gt;" />
            <TextBlock Text="{Binding IsChecked, ElementName=checked3, Converter={StaticResource InverseBooleanConverter}}" />
        </StackPanel>
    </controls:TitledItem>
    
  15. IsLastItemInListConverter:

    • Usage
    <converters:IsLastItemInListConverter x:Key="IsLastItemInListConverter" />
    
    <controls:TitledItem Title="IsLastItemInListConverter">
        <DataGrid HorizontalAlignment="Left"
                  AutoGenerateColumns="False"
                  CanUserAddRows="False"
                  HeadersVisibility="Column"
                  ItemsSource="{Binding Integers}">
            <DataGrid.ItemContainerStyle>
                <Style TargetType="{x:Type DataGridRow}">
                    <Setter Property="Background" Value="White" />
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type DataGridRow}">
                                <Border Background="{TemplateBinding Background}">
                                    <DataGridCellsPresenter />
                                </Border>
                                <ControlTemplate.Triggers>
                                    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource IsLastItemInListConverter}}" Value="True">
                                        <Setter Property="Background" Value="Yellow" />
                                    </DataTrigger>
                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </DataGrid.ItemContainerStyle>
            <DataGrid.Columns>
                <DataGridTextColumn Width="100"
                                    Binding="{Binding Value}"
                                    Header="Value"
                                    SortMemberPath="Value" />
            </DataGrid.Columns>
        </DataGrid>
    </controls:TitledItem>
    
  16. MultiBooleanToBooleanConverter:

    • Usage
    <converters:MultiBooleanToBooleanConverter x:Key="MultiBooleanToBooleanConverter" MixedIs="{x:Null}" />
    
    <controls:TitledItem Title="MultiBooleanToBooleanConverter">
        <StackPanel Orientation="Horizontal">
            <StackPanel>
                <CheckBox x:Name="checked12" Content="Checked" />
                <CheckBox x:Name="checked13" Content="Checked" />
                <CheckBox x:Name="checked14" Content="Checked" />
            </StackPanel>
            <TextBlock Margin="10,0"
                        VerticalAlignment="Center"
                        Text="-&gt;" />
            <CheckBox VerticalAlignment="Center"
                        Content="Are Equal"
                        IsEnabled="False">
                <CheckBox.IsChecked>
                    <MultiBinding Converter="{StaticResource MultiBooleanToBooleanConverter}">
                        <Binding ElementName="checked12" Path="IsChecked" />
                        <Binding ElementName="checked13" Path="IsChecked" />
                        <Binding ElementName="checked14" Path="IsChecked" />
                    </MultiBinding>
                </CheckBox.IsChecked>
            </CheckBox>
        </StackPanel>
    </controls:TitledItem>
    
  17. MultiBooleanToVisibilityConverter:

    • Usage
    <converters:MultiBooleanToVisibilityConverter x:Key="MultiBooleanToVisibilityConverter" MixedIs="Hidden" />
    
    <controls:TitledItem Title="MultiBooleanToVisibilityConverter">
        <StackPanel Orientation="Horizontal">
            <StackPanel>
                <CheckBox x:Name="checked15" Content="Checked" />
                <CheckBox x:Name="checked16" Content="Checked" />
                <CheckBox x:Name="checked17" Content="Checked" />
            </StackPanel>
            <TextBlock Margin="10,0"
                        VerticalAlignment="Center"
                        Text="-&gt;" />
            <TextBlock VerticalAlignment="Center" Text="IsVisible">
                <TextBlock.Visibility>
                    <MultiBinding Converter="{StaticResource MultiBooleanToVisibilityConverter}">
                        <Binding ElementName="checked15" Path="IsChecked" />
                        <Binding ElementName="checked16" Path="IsChecked" />
                        <Binding ElementName="checked17" Path="IsChecked" />
                    </MultiBinding>
                </TextBlock.Visibility>
            </TextBlock>
        </StackPanel>
    </controls:TitledItem>
    
  18. MultiEqualsToBooleanConverter:

    • Usage
    <converters:MultiEqualsToBooleanConverter x:Key="MultiEqualsToBooleanConverter" />
    
    <controls:TitledItem Title="MultiEqualsToBooleanConverter">
        <StackPanel Orientation="Horizontal">
            <StackPanel>
                <CheckBox x:Name="checked4" Content="Checked" />
                <CheckBox x:Name="checked5" Content="Checked" />
                <CheckBox x:Name="checked6" Content="Checked" />
            </StackPanel>
            <TextBlock Margin="10,0"
                       VerticalAlignment="Center"
                       Text="-&gt;" />
            <CheckBox VerticalAlignment="Center"
                      Content="Are Equal"
                      IsEnabled="False">
                <CheckBox.IsChecked>
                    <MultiBinding Converter="{StaticResource MultiEqualsToBooleanConverter}">
                        <Binding ElementName="checked4" Path="IsChecked" />
                        <Binding ElementName="checked5" Path="IsChecked" />
                        <Binding ElementName="checked6" Path="IsChecked" />
                    </MultiBinding>
                </CheckBox.IsChecked>
            </CheckBox>
        </StackPanel>
    </controls:TitledItem>
    
  19. MultiEqualsToVisibilityConverter:

    • Usage
    <converters:MultiEqualsToVisibilityConverter x:Key="MultiEqualsToVisibilityConverter" />
    
    <controls:TitledItem Title="MultiEqualsToVisibilityConverter">
        <StackPanel Orientation="Horizontal">
            <StackPanel>
                <CheckBox x:Name="checked7" Content="Checked" />
                <CheckBox x:Name="checked8" Content="Checked" />
                <CheckBox x:Name="checked9" Content="Checked" />
            </StackPanel>
            <TextBlock Margin="10,0"
                       VerticalAlignment="Center"
                       Text="-&gt;" />
            <TextBlock VerticalAlignment="Center" Text="IsVisible">
                <TextBlock.Visibility>
                    <MultiBinding Converter="{StaticResource MultiEqualsToVisibilityConverter}">
                        <Binding ElementName="checked7" Path="IsChecked" />
                        <Binding ElementName="checked8" Path="IsChecked" />
                        <Binding ElementName="checked9" Path="IsChecked" />
                    </MultiBinding>
                </TextBlock.Visibility>
            </TextBlock>
        </StackPanel>
    </controls:TitledItem>
    
  20. MultiValueToPathConverter:

    • Usage
    <converters:MultiValueToPathConverter x:Key="MultiValueToPathConverter" />
    
    <controls:TitledItem Title="MultiValueToPathConverter">
        <StackPanel Orientation="Horizontal">
            <StackPanel>
                <TextBox Width="100" Text="{Binding Text3, UpdateSourceTrigger=PropertyChanged}" />
                <TextBox Width="100" Text="{Binding Text4, UpdateSourceTrigger=PropertyChanged}" />
                <TextBox Width="100" Text="{Binding Text5, UpdateSourceTrigger=PropertyChanged}" />
            </StackPanel>
            <TextBlock Margin="10,0"
                       VerticalAlignment="Center"
                       Text="-&gt;" />
            <TextBlock VerticalAlignment="Center">
                <TextBlock.Text>
                    <MultiBinding Converter="{StaticResource MultiValueToPathConverter}">
                        <Binding Path="Text3" />
                        <Binding Path="Text4" />
                        <Binding Path="Text5" />
                    </MultiBinding>
                </TextBlock.Text>
            </TextBlock>
        </StackPanel>
    </controls:TitledItem>
    
  21. MultiValueToThicknessConverter:

    • Usage
    <converters:MultiValueToThicknessConverter x:Key="MultiValueToThicknessConverter" />
    
    <controls:TitledItem Title="MultiValueToThicknessConverter">
        <StackPanel Orientation="Horizontal">
            <StackPanel>
                <TextBox Width="30" Text="{Binding Double2, UpdateSourceTrigger=PropertyChanged}" />
                <TextBox Width="30" Text="{Binding Double3, UpdateSourceTrigger=PropertyChanged}" />
                <TextBox Width="30" Text="{Binding Double4, UpdateSourceTrigger=PropertyChanged}" />
                <TextBox Width="30" Text="{Binding Double5, UpdateSourceTrigger=PropertyChanged}" />
            </StackPanel>
            <TextBlock Margin="10,0"
                       VerticalAlignment="Center"
                       Text="-&gt;" />
            <Border VerticalAlignment="Center"
                    BorderBrush="Gray"
                    BorderThickness="1">
                <TextBlock Text="Margin">
                    <TextBlock.Margin>
                        <MultiBinding Converter="{StaticResource MultiValueToThicknessConverter}">
                            <Binding Path="Double2" />
                            <Binding Path="Double3" />
                            <Binding Path="Double4" />
                            <Binding Path="Double5" />
                        </MultiBinding>
                    </TextBlock.Margin>
                </TextBlock>
            </Border>
        </StackPanel>
    </controls:TitledItem>
    
  22. NullToBooleanConverter:

    • Usage
    <converters:NullToBooleanConverter x:Key="NullToBooleanConverter" Direction="NullIsTrue" />
    
    <controls:TitledItem Title="NullToBooleanConverter">
        <StackPanel Orientation="Horizontal">
            <CheckBox x:Name="checked10"
                      Content="Checked"
                      IsThreeState="True" />
            <TextBlock Margin="10,0" Text="-&gt;" />
            <TextBlock Text="{Binding IsChecked, ElementName=checked10, Converter={StaticResource NullToBooleanConverter}}" />
        </StackPanel>
    </controls:TitledItem>
    
  23. NullToVisibilityConverter:

    • Usage
    <converters:NullToVisibilityConverter x:Key="NullToVisibilityConverter" Direction="NullIsVisible" />
    
    <controls:TitledItem Title="NullToVisibilityConverter">
        <StackPanel Orientation="Horizontal">
            <CheckBox x:Name="checked11"
                      Content="Checked"
                      IsThreeState="True" />
            <TextBlock Margin="10,0" Text="-&gt;" />
            <TextBlock Text="{Binding IsChecked, ElementName=checked11, Converter={StaticResource NullToVisibilityConverter}}" />
        </StackPanel>
    </controls:TitledItem>
    
  24. PathToStringConverter:

    • Usage
    <converters:PathToStringConverter x:Key="PathToStringConverter" Section="Directory" />
    
    <controls:TitledItem Title="PathToStringConverter">
        <StackPanel Orientation="Horizontal">
            <TextBox Width="200" Text="{Binding Text6, UpdateSourceTrigger=PropertyChanged}" />
            <TextBlock Margin="10,0" Text="-&gt;" />
            <TextBlock Text="{Binding Text6, ConverterParameter=demo, Converter={StaticResource PathToStringConverter}}" />
        </StackPanel>
    </controls:TitledItem>
    
  25. TimeOnlyToStringConverter:

    • Usage
    <converters:TimeOnlyToStringConverter x:Key="TimeOnlyToStringConverter" Format="ToLongTimeString" />
    
    <controls:TitledItem Title="TimeOnlyToStringConverter">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="ToLongTimeString" />
            <TextBlock Margin="10,0" Text="-&gt;" />
            <TextBlock Text="{Binding TimeOnly1, Converter={StaticResource TimeOnlyToStringConverter}}" />
        </StackPanel>
    </controls:TitledItem>
    

License

Copyright (c) David Wendland. All rights reserved. Licensed under the MIT License. See LICENSE file in the project root for full license information.

Product Compatible and additional computed target framework versions.
.NET net6.0-windows7.0 is compatible.  net7.0-windows was computed.  net7.0-windows7.0 is compatible.  net8.0-windows was computed.  net8.0-windows7.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0-windows7.0

    • No dependencies.
  • net7.0-windows7.0

    • No dependencies.
  • net8.0-windows7.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
3.0.0 80 6/7/2024
2.3.0 184 4/1/2024
2.2.0 183 3/21/2024
2.1.0 333 2/14/2024
2.0.0 400 2/3/2024
1.1.0 439 1/17/2024
1.0.0 532 12/24/2023