I have following XAML:
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center"
FontSize="10" FontFamily="Arial" Foreground="#414141">
<Run Text="{Binding LoadsCount}" />
<Run Text="+" />
<Run Text="{Binding BrokerLoadsCount}" />
</TextBlock>
And I get display like this: 12 + 11
Somehow it inserts extra space between each Run
How do I make it display 12+11
?
My solution is to make the default font size nearly invisible(
FontSize="1"
) and then set the font size to the desired size at every each<Run
:You may be better off doing it in Code Behind. I have tried previous solutions but in certain situations VS just formatted away the carefully indented code.
The spaces between the run tags cause the spaces, this is the easiest fix.
Because anything between the
<TextBlock>
and</TextBlock>
is targeting the text property of the TextBlock the whitespace from the breaks between the runs causes the effect you see. You could also shorten it to this.This MSDN article gives all the specifics on how xaml handles the whitespace
http://msdn.microsoft.com/en-us/library/ms788746.aspx
If you were curious why a break and a ton of tabs translates into a single space
I ported Pieter's attached property to WPF (I think it's for UWP).
Example:
I've written a Attached Property to 'bypass' this behavior.
The entire source code and the explanation of it all can be found here. By using this attached property you can keep your XAML formatting just the way you want, but you don't get these whitespaces in your rendered XAML.
One problem with Kevin's nice solution is that the single-line formatting of
XAML
tags is undone when you apply some of the XAML/XML automatic reformatting functions, e.g. "ctrl-K + ctrl-D". One workaround I found is to format theRun
tags as follows:Although splitting the tag across lines like this is somewhat awkward, this format will not be altered by automatic reformatting, provided you select the
Visual Studio
option "Preserve new lines and spaces between attributes" for the XAML text editor:Another option is to comment the space between Run tags, maintaining the code readable and removing the extra space.