locked
How to change foreground color of each textblock element in a grid (C#) RRS feed

  • Question

  • Hello, everyone.

    I am writing this to ask one question about changing a color in textblock.

    in below TextBlock, all Letters will be 'Green'. But I want to change color of each letter with certain condition from output(sentence).

    Text is used with binding and I also want to keep textBlock format.

    Please, give me some help or idea.

    Please, refer to the below related codes. Thanks in advance

    Xaml =================================

    <Grid>...

    <Grid.Resources>
                            <CollectionViewSource x:Key="sequenceCollection" Source="{Binding LoadedSequences}">
                                <CollectionViewSource.GroupDescriptions>
                                    <PropertyGroupDescription PropertyName="MoleculeType" />
                                </CollectionViewSource.GroupDescriptions>
                                <CollectionViewSource.SortDescriptions>
                                    <my:SortDescription Direction="Ascending" PropertyName="FullName" />
                                </CollectionViewSource.SortDescriptions>
                            </CollectionViewSource>
    </Grid.Resources>

    <Grid>...
    <Grid.Style>
                    <Style TargetType="Grid">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding SelectedSequence}" Value="{x:Null}">
                                <Setter Property="UIElement.Visibility" Value="Visible" />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </Grid.Style>
    <Grid>...
                        <Grid.Resources>...
                            <Style TargetType="TextBlock">
                                <Setter Property="FrameworkElement.VerticalAlignment" Value="Center" />
                                <Setter Property="FrameworkElement.Margin" Value="5" />
                                <Setter Property="TextBlock.TextTrimming" Value="CharacterEllipsis" />
                                <Setter Property="TextBlock.TextWrapping" Value="NoWrap" />
                            </Style>
                        </Grid.Resources>...
    <TextBlock Foreground="Green" Grid.Column="1" Grid.Row="5" Text="{Binding SelectedSequence.QulityScoreSegment}" TextElement.FontFamily="Consolas, Courier New" />
    </Grid>...
    </Grid>...

    </Grid>...

    C# =================================

    public int SegmentPosition
            {
                get { return _position; }
                set
                {
                    _position = value;
     .....
                    RaisePropertyChanged("QulityScoreSegment");
                }
            }

    public string QulityScoreSegment
            {
                get
                {
                    return GetQualityScores((QualitativeSequence)_sequence.GetSubSequence(_position, DisplayCount));
                }
            }
    private static string GetQualityScores(QualitativeSequence qs)
            {
                return new string(qs.GetEncodedQualityScores().Select(c => (char)c).Take(255).ToArray());
            }

     =================================


    • Edited by SungKook Tuesday, November 5, 2013 5:08 PM
    Tuesday, November 5, 2013 4:53 PM

Answers

  • Then you have to use a TextBlock element or Run element for each character. Below is an example with Run elements that each one uses a value converter to display an individual character of the bound QulityScoreSegment string specified by the ConverterParameter.

    A style with triggers is then used to change the Foreground property of the Run element based on the character.

            <TextBlock xmlns:local="clr-namespace:WpfApplication1">
                <TextBlock.Resources>
                    <local:CharConverter x:Key="charConverter"/>
                    <Style TargetType="Run">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding Path=Text, RelativeSource={RelativeSource Self}}" Value="A">
                                <Setter Property="Foreground" Value="Red"/>
                            </DataTrigger>
                            <DataTrigger Binding="{Binding Path=Text, RelativeSource={RelativeSource Self}}" Value="T">
                                <Setter Property="Foreground" Value="Blue"/>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </TextBlock.Resources>
                <Run Text="{Binding QulityScoreSegment, Mode=OneWay, Converter={StaticResource charConverter}, ConverterParameter=0}"
                     /><Run Text="{Binding QulityScoreSegment, Mode=OneWay, Converter={StaticResource charConverter}, ConverterParameter=1}" 
                     /><Run Text="{Binding QulityScoreSegment, Mode=OneWay, Converter={StaticResource charConverter}, ConverterParameter=2}" 
                     /><Run Text="{Binding QulityScoreSegment, Mode=OneWay, Converter={StaticResource charConverter}, ConverterParameter=3}" 
                     /><Run Text="{Binding QulityScoreSegment, Mode=OneWay, Converter={StaticResource charConverter}, ConverterParameter=4}" />
            </TextBlock> 

    public class CharConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                string s = value as string;
                int index = System.Convert.ToInt32(parameter);
                return s[index];
            }
    
            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                throw new NotSupportedException();
            }
        }
    

    • Marked as answer by SungKook Thursday, November 7, 2013 4:15 PM
    Thursday, November 7, 2013 10:19 AM
  • Yes, you could create the Run elements dynamically in code:

    public MainWindow()
            {
                InitializeComponent();
    
                for (int i = 0; i < 5; ++i)
                {
                    Run run = new Run();
                    run.SetBinding(Run.TextProperty, new Binding("QulityScoreSegment") 
                    {
                        Mode = BindingMode.OneWay,
                        Converter = new CharConverter(),
                        ConverterParameter = i
                    });
                    txtBlock.Inlines.Add(run);
                }
           }
            <TextBlock x:Name="txtBlock">
                <TextBlock.Resources>
                    <Style TargetType="Run">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding Path=Text, RelativeSource={RelativeSource Self}}" Value="A">
                                <Setter Property="Foreground" Value="Red"/>
                            </DataTrigger>
                            <DataTrigger Binding="{Binding Path=Text, RelativeSource={RelativeSource Self}}" Value="T">
                                <Setter Property="Foreground" Value="Blue"/>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </TextBlock.Resources>
            </TextBlock>

    Remember to mark any post(s) that provide(s) a solution to your issue as answer and/or vote as helpful.


    • Edited by Magnus (MM8)MVP Thursday, November 7, 2013 3:58 PM
    • Marked as answer by SungKook Thursday, November 7, 2013 4:15 PM
    Thursday, November 7, 2013 3:57 PM
  • Hi,

    >>But I want to change color of each letter with certain condition from output (sentence). Text is used with binding and I also want to keep Text Block format.

    Based on my understanding, I supposed that you want to change color with some certain condition. In other words, in different content, the Text Block foreground is different. For this situation, I think we can use a Converter to achieve this function. For more information, please see IValueConverter. Here are some code snippet, something looks like,

    XAML Code:

    <Window x:Class="WpfTextBlockForeground.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:WpfTextBlockForeground"
            Title="MainWindow" Height="350" Width="525">
        <Window.Resources>
            <local:DataConverter x:Key="ColorConverter"/>
        </Window.Resources>
        <StackPanel>
            <TextBlock Text="Hello" 
                       FontSize="24"
                       Foreground ="{Binding RelativeSource={RelativeSource Self}, 
                                            Converter={StaticResource ColorConverter}}"/>
            <TextBlock Text="World!" 
                       FontSize="24"
                       Foreground ="{Binding RelativeSource={RelativeSource Self},
                                            Converter={StaticResource ColorConverter}}"/>
        </StackPanel>
    </Window>

    C# Code: 

    public class DataConverter : IValueConverter
    {
    	public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    	{
    		TextBlock TxtBlock = (TextBlock)value;
    		if (TxtBlock.Text.ToString() == "Hello")
    		{
    			SolidColorBrush bb = new SolidColorBrush();
    			bb.Color = Color.FromArgb(255, 255, 0, 255);
    			return bb;
    		}
    		else
    		{
    			SolidColorBrush bb = new SolidColorBrush();
    			bb.Color = Color.FromArgb(255, 0, 0, 255);
    			return bb;
    		}
    	}
    
    	public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    	{
    		return null;
    	}
    }

    If I misunderstood, please feel free to let me know.

    Have a nice time!

    Regards,


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • Marked as answer by Yang,Chenfei Friday, November 8, 2013 12:56 AM
    Wednesday, November 6, 2013 7:09 AM
  • Hi,

    >> I want 'A' to be Red. Likewise C is Blue, G is Green, T is Yellow.

    For this situation, I think we should modified the Converter class. Something looks like this,

    XAML Code:

    <Window x:Class="WpfTextBlockForeground.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:WpfTextBlockForeground"
            Title="MainWindow" Height="350" Width="525">
        <Window.Resources>
            <local:DataConverter x:Key="ColorConverter"/>
        </Window.Resources>
        <StackPanel>
            <TextBlock Text="Apple" 
                       FontSize="24"
                       Foreground ="{Binding RelativeSource={RelativeSource Self}, 
                                    Converter={StaticResource ColorConverter}}"/>
            <TextBlock Text="Color!" 
                       FontSize="24"
                       Foreground ="{Binding RelativeSource={RelativeSource Self},
                                    Converter={StaticResource ColorConverter}}"/>
            <TextBlock Text="Green!" 
                       FontSize="24"
                       Foreground ="{Binding RelativeSource={RelativeSource Self},
                                    Converter={StaticResource ColorConverter}}"/>
            <TextBlock Text="Title!" 
                       FontSize="24"
                       Foreground ="{Binding RelativeSource={RelativeSource Self},
                                    Converter={StaticResource ColorConverter}}"/>
        </StackPanel>
    </Window>

    C#

    public class DataConverter : IValueConverter
    {
    	public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    	{
    		TextBlock TxtBlock = (TextBlock)value;
    		if (TxtBlock != null)
    		{
    			string TxtValue = TxtBlock.Text.ToString();
    
    			if (TxtValue.Substring(0, 1).ToUpper() == "A")
    			{
    				return new SolidColorBrush(Colors.Red);
    			}
    			else if (TxtValue.Substring(0, 1).ToUpper() == "C")
    			{
    				return new SolidColorBrush(Colors.Blue);
    			}
    			else if (TxtValue.Substring(0, 1).ToUpper() == "G")
    			{
    				return new SolidColorBrush(Colors.Green);
    			}
    			else if (TxtValue.Substring(0, 1).ToUpper() == "T")
    			{
    				return new SolidColorBrush(Colors.Yellow);
    			}
    			else
    			{
    				return value;
    			}
    		}
    		else
    		{
    			return value;
    		}
    	}
    
    	public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    	{
    		return null;
    	}
    }

    The result is shown in the following figure,

    Have a nice time!

    Sincerely,


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • Marked as answer by Yang,Chenfei Friday, November 8, 2013 12:56 AM
    Thursday, November 7, 2013 6:27 AM

All replies

  • Hi,

    >>But I want to change color of each letter with certain condition from output (sentence). Text is used with binding and I also want to keep Text Block format.

    Based on my understanding, I supposed that you want to change color with some certain condition. In other words, in different content, the Text Block foreground is different. For this situation, I think we can use a Converter to achieve this function. For more information, please see IValueConverter. Here are some code snippet, something looks like,

    XAML Code:

    <Window x:Class="WpfTextBlockForeground.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:WpfTextBlockForeground"
            Title="MainWindow" Height="350" Width="525">
        <Window.Resources>
            <local:DataConverter x:Key="ColorConverter"/>
        </Window.Resources>
        <StackPanel>
            <TextBlock Text="Hello" 
                       FontSize="24"
                       Foreground ="{Binding RelativeSource={RelativeSource Self}, 
                                            Converter={StaticResource ColorConverter}}"/>
            <TextBlock Text="World!" 
                       FontSize="24"
                       Foreground ="{Binding RelativeSource={RelativeSource Self},
                                            Converter={StaticResource ColorConverter}}"/>
        </StackPanel>
    </Window>

    C# Code: 

    public class DataConverter : IValueConverter
    {
    	public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    	{
    		TextBlock TxtBlock = (TextBlock)value;
    		if (TxtBlock.Text.ToString() == "Hello")
    		{
    			SolidColorBrush bb = new SolidColorBrush();
    			bb.Color = Color.FromArgb(255, 255, 0, 255);
    			return bb;
    		}
    		else
    		{
    			SolidColorBrush bb = new SolidColorBrush();
    			bb.Color = Color.FromArgb(255, 0, 0, 255);
    			return bb;
    		}
    	}
    
    	public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    	{
    		return null;
    	}
    }

    If I misunderstood, please feel free to let me know.

    Have a nice time!

    Regards,


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • Marked as answer by Yang,Chenfei Friday, November 8, 2013 12:56 AM
    Wednesday, November 6, 2013 7:09 AM
  • If you want to change a UI property based on some data bound source property, you could use a style with triggers.

    In the following example, the Foreground property of the TextBlock is set to Red if the value of the SelectedSequence.QulityScoreSegment source property is "Somevalue..." while it is set to Blue if the value of the source property is "SomeOtherValue...":

            <TextBlock Text="{Binding SelectedSequence.QulityScoreSegment}" FontFamily="Consolas, Courier New">
                <TextBlock.Style>
                    <Style TargetType="TextBlock">
                        <Setter Property="Foreground" Value="Green"/>
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding SelectedSequence.QulityScoreSegment}" Value="Somevalue...">
                                <Setter Property="Foreground" Value="Red"/>
                            </DataTrigger>
                            <DataTrigger Binding="{Binding SelectedSequence.QulityScoreSegment}" Value="SomeOtherValue...">
                                <Setter Property="Foreground" Value="Blue"/>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </TextBlock.Style>
            </TextBlock>
    

    If the value of the source property doesn't match any of these conditions, the Foreground property of the TextBlock is set to Green.

    • Proposed as answer by Yang,Chenfei Wednesday, November 6, 2013 10:07 AM
    Wednesday, November 6, 2013 8:43 AM
  • - Magnus (MM8)

    Thank you so much for your answer.
    Your answer is working well.
    According to your answer, it will change the color of whole sentence from Binding.
    However, I want a little different thing. For example, if string(Binding="{Binding SelectedSequence.QulityScoreSegment}) is "ACGTACGT", I want 'A' to be Red. Likewise C is Blue, G is Green, T is Yellow.
    It means each letter has a different color.
    Is it possible to be changed like the above ?
    Thanks in advance.

    • Edited by SungKook Wednesday, November 6, 2013 3:26 PM
    Wednesday, November 6, 2013 3:17 PM
  • - Jimmy Yang

    Thank you so much for your answer.
    Your answer is working well.
    According to your answer, it will change the color of whole sentence of the textblock.
    However, I want a little different thing. For example, if string(Binding="{Binding SelectedSequence.QulityScoreSegment}) is "ACGTACGT", I want 'A' to be Red. Likewise C is Blue, G is Green, T is Yellow.
    It means each letter has a different color.
    Is it possible to be changed like the above ?
    Thanks in advance.

    • Edited by SungKook Wednesday, November 6, 2013 3:26 PM
    Wednesday, November 6, 2013 3:22 PM
  • Hi,

    >> I want 'A' to be Red. Likewise C is Blue, G is Green, T is Yellow.

    For this situation, I think we should modified the Converter class. Something looks like this,

    XAML Code:

    <Window x:Class="WpfTextBlockForeground.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:WpfTextBlockForeground"
            Title="MainWindow" Height="350" Width="525">
        <Window.Resources>
            <local:DataConverter x:Key="ColorConverter"/>
        </Window.Resources>
        <StackPanel>
            <TextBlock Text="Apple" 
                       FontSize="24"
                       Foreground ="{Binding RelativeSource={RelativeSource Self}, 
                                    Converter={StaticResource ColorConverter}}"/>
            <TextBlock Text="Color!" 
                       FontSize="24"
                       Foreground ="{Binding RelativeSource={RelativeSource Self},
                                    Converter={StaticResource ColorConverter}}"/>
            <TextBlock Text="Green!" 
                       FontSize="24"
                       Foreground ="{Binding RelativeSource={RelativeSource Self},
                                    Converter={StaticResource ColorConverter}}"/>
            <TextBlock Text="Title!" 
                       FontSize="24"
                       Foreground ="{Binding RelativeSource={RelativeSource Self},
                                    Converter={StaticResource ColorConverter}}"/>
        </StackPanel>
    </Window>

    C#

    public class DataConverter : IValueConverter
    {
    	public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    	{
    		TextBlock TxtBlock = (TextBlock)value;
    		if (TxtBlock != null)
    		{
    			string TxtValue = TxtBlock.Text.ToString();
    
    			if (TxtValue.Substring(0, 1).ToUpper() == "A")
    			{
    				return new SolidColorBrush(Colors.Red);
    			}
    			else if (TxtValue.Substring(0, 1).ToUpper() == "C")
    			{
    				return new SolidColorBrush(Colors.Blue);
    			}
    			else if (TxtValue.Substring(0, 1).ToUpper() == "G")
    			{
    				return new SolidColorBrush(Colors.Green);
    			}
    			else if (TxtValue.Substring(0, 1).ToUpper() == "T")
    			{
    				return new SolidColorBrush(Colors.Yellow);
    			}
    			else
    			{
    				return value;
    			}
    		}
    		else
    		{
    			return value;
    		}
    	}
    
    	public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    	{
    		return null;
    	}
    }

    The result is shown in the following figure,

    Have a nice time!

    Sincerely,


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • Marked as answer by Yang,Chenfei Friday, November 8, 2013 12:56 AM
    Thursday, November 7, 2013 6:27 AM
  • Then you have to use a TextBlock element or Run element for each character. Below is an example with Run elements that each one uses a value converter to display an individual character of the bound QulityScoreSegment string specified by the ConverterParameter.

    A style with triggers is then used to change the Foreground property of the Run element based on the character.

            <TextBlock xmlns:local="clr-namespace:WpfApplication1">
                <TextBlock.Resources>
                    <local:CharConverter x:Key="charConverter"/>
                    <Style TargetType="Run">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding Path=Text, RelativeSource={RelativeSource Self}}" Value="A">
                                <Setter Property="Foreground" Value="Red"/>
                            </DataTrigger>
                            <DataTrigger Binding="{Binding Path=Text, RelativeSource={RelativeSource Self}}" Value="T">
                                <Setter Property="Foreground" Value="Blue"/>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </TextBlock.Resources>
                <Run Text="{Binding QulityScoreSegment, Mode=OneWay, Converter={StaticResource charConverter}, ConverterParameter=0}"
                     /><Run Text="{Binding QulityScoreSegment, Mode=OneWay, Converter={StaticResource charConverter}, ConverterParameter=1}" 
                     /><Run Text="{Binding QulityScoreSegment, Mode=OneWay, Converter={StaticResource charConverter}, ConverterParameter=2}" 
                     /><Run Text="{Binding QulityScoreSegment, Mode=OneWay, Converter={StaticResource charConverter}, ConverterParameter=3}" 
                     /><Run Text="{Binding QulityScoreSegment, Mode=OneWay, Converter={StaticResource charConverter}, ConverterParameter=4}" />
            </TextBlock> 

    public class CharConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                string s = value as string;
                int index = System.Convert.ToInt32(parameter);
                return s[index];
            }
    
            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                throw new NotSupportedException();
            }
        }
    

    • Marked as answer by SungKook Thursday, November 7, 2013 4:15 PM
    Thursday, November 7, 2013 10:19 AM
  • - Magnus (MM8)

    Really, thank you so much !!
    This is what I exactly want.
    May I ask you one more question?
    I should control the number of letters in one sentence.
    According to the your code, to choose 100 letters, I should write the code line 100 times.
    Can I reduce the repeating line?
    Thanks in advance

    Please, refer to the below code lines. To show 5 letters, I need to write the 5 lines. I want to reduce them.

    </TextBlock.Resources>
                                    <Run Text="{Binding SelectedSequence.Segment, Mode=OneWay, Converter={StaticResource charConverter}, ConverterParameter=0}"
                                /><Run Text="{Binding SelectedSequence.Segment, Mode=OneWay, Converter={StaticResource charConverter}, ConverterParameter=1}"
                                /><Run Text="{Binding SelectedSequence.Segment, Mode=OneWay, Converter={StaticResource charConverter}, ConverterParameter=2}"
                                /><Run Text="{Binding SelectedSequence.Segment, Mode=OneWay, Converter={StaticResource charConverter}, ConverterParameter=3}"
                                /><Run Text="{Binding SelectedSequence.Segment, Mode=OneWay, Converter={StaticResource charConverter}, ConverterParameter=4}"
                                /><Run Text="{Binding SelectedSequence.Segment, Mode=OneWay, Converter={StaticResource charConverter}, ConverterParameter=5}" />

    Thursday, November 7, 2013 3:45 PM
  • Yes, you could create the Run elements dynamically in code:

    public MainWindow()
            {
                InitializeComponent();
    
                for (int i = 0; i < 5; ++i)
                {
                    Run run = new Run();
                    run.SetBinding(Run.TextProperty, new Binding("QulityScoreSegment") 
                    {
                        Mode = BindingMode.OneWay,
                        Converter = new CharConverter(),
                        ConverterParameter = i
                    });
                    txtBlock.Inlines.Add(run);
                }
           }
            <TextBlock x:Name="txtBlock">
                <TextBlock.Resources>
                    <Style TargetType="Run">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding Path=Text, RelativeSource={RelativeSource Self}}" Value="A">
                                <Setter Property="Foreground" Value="Red"/>
                            </DataTrigger>
                            <DataTrigger Binding="{Binding Path=Text, RelativeSource={RelativeSource Self}}" Value="T">
                                <Setter Property="Foreground" Value="Blue"/>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </TextBlock.Resources>
            </TextBlock>

    Remember to mark any post(s) that provide(s) a solution to your issue as answer and/or vote as helpful.


    • Edited by Magnus (MM8)MVP Thursday, November 7, 2013 3:58 PM
    • Marked as answer by SungKook Thursday, November 7, 2013 4:15 PM
    Thursday, November 7, 2013 3:57 PM
  • -Magnus (MM8)

    Everything is working well now

    I really appreciate your kindness.

    Have a Good Day !!

    Thursday, November 7, 2013 4:20 PM
  • Thank you so much

    Have a nice day !!

    Thursday, November 7, 2013 4:22 PM