This follows from the last post. In a program, you may have the need for multiple converters.
In the C# code below (UpperABTolower.cs) I have added a new class at the bottom called ConvertUpperVowelsToLower. The code here is not at all complex. You are more likely to make a mistake in the XAML code.
using System; using System.Globalization; using System.Windows.Data; namespace ConvertAandB { class UpperABToLower : IValueConverter { // Convert all 'A' to 'a' and all 'B' to 'b' and 'C' to 'c' public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { string stg = value.ToString().Replace('A', 'a'); stg = stg.ToString().Replace('B', 'b'); // Convert 'C' to 'c' stg = ConvertCToc(stg); // call another 'conversion' return stg; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } public string ConvertCToc(string inText) { return inText.ToString().Replace('C', 'c'); } } class ConvertUpperVowelsToLower : IValueConverter { // Convert all 'A' to 'a', 'E' to 'e', 'I' to 'i', 'O' to 'o', 'U' to 'u' public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { string stg = value.ToString().Replace('A', 'a'); stg = stg.ToString().Replace('E', 'e'); stg = stg.ToString().Replace('I', 'i'); stg = stg.ToString().Replace('O', 'o'); stg = stg.ToString().Replace('U', 'u'); return stg; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } }
Below is the XAML. Notice that there are now two Window.Resources.
<Window x:Class="ConvertAandB.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:ConvertAandB" mc:Ignorable="d" Title="ConvertAandB" Height="350" Width="400"> <Window.Resources> <local:UpperABToLower x:Key="UpperABToLower" /> <local:ConvertUpperVowelsToLower x:Key="ConvertUpperVowelsToLower" /> </Window.Resources> <StackPanel Margin="16"> <TextBox Name="txtboxIn" Width="200" HorizontalAlignment="Left">Enter text</TextBox> <WrapPanel> <TextBlock Text="Convert A to a and B to b and C to c: " /> <TextBlock Text="{Binding ElementName=txtboxIn, Path=Text, Converter={StaticResource UpperABToLower}}"></TextBlock> </WrapPanel> <TextBox Name="txtboxIn2" Width="200" HorizontalAlignment="Left">Enter text</TextBox> <WrapPanel> <TextBlock Text="Convert upper case vowels to lower case vowels: " /> <TextBlock Text="{Binding ElementName=txtboxIn2, Path=Text, Converter={StaticResource ConvertUpperVowelsToLower}}"></TextBlock> </WrapPanel> </StackPanel> </Window>