XAML сворачивает некоторые пробелы, поэтому завершающие пробелы не могут быть отображены. Этот документ объясняет это подробно.
Для вашего кода я предлагаю вам использовать TextBlock
вместо ContentControl
, нам нужно использовать Run
in TextBlock
:
<StackPanel Orientation="Horizontal">
<TextBlock Text="Test 1"/>
<TextBlock>
<Run Text=" ### "/>
</TextBlock>
<TextBlock Text="Test 2"/>
</StackPanel>
 
- управляющий символ для XML, представляющий пробел.
Обновление
Обратите вниманиечто  
является escape-символом XML, пожалуйста, не используйте его в коде C #. В Code-behind используйте
textBlock.Inlines.Add(new Run() { Text = " #"+(char)160 });
Если вы решите создать элемент ItemsControl
в коде сзади, пожалуйста, измените ItemsPanelTemplate
из ItemsControl
.
<ItemsControl x:Name="itemsControl">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
С наилучшими пожеланиями.