2

I need to replace a , with ,\n(New Line) in my string i want to do it on ClientSide in StringFormat

<TextBlock Grid.Row="0" Text="{Binding Address}" Grid.RowSpan="3" />

How can i do this?

1 Answer 1

10

You can't do this via a StringFormat binding operation, as that doesn't support replacement, only composition of inputs.

You really have two options - expose a new property on your VM that has the replaced value, and bind to that, or use an IValueConverter to handle the replacement.

A value converter could look like:

public class AddNewlineConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        string original = Convert.ToString(value);
        return original.Replace(",", ",\n");
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplemnentedException();
    }
}

You'd then use this in your binding. You could add a resource:

<Window.Resources>
    <local:AddNewlineConverter x:Key="addNewLineConv" />
</Window.Resources>

In your binding, you'd change this to:

<TextBlock Grid.Row="0" 
      Text="{Binding Path=Address, Converter={StaticResource addNewLineConv}}"
      Grid.RowSpan="3" />
Sign up to request clarification or add additional context in comments.

3 Comments

Can you please give me an example how to do that
@KrishnaThota It's up there.
Careful: NotImplemnentedException => NotImplementedException

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.