uwp - UWP ContentControl 未在其内容中显示空格
问题描述
我正在尝试在堆栈面板中添加内容控件,如下面的代码片段所示
<StackPanel Orientation="Horizontal" >
<ContentControl Content="Test 1"/>
<ContentControl Content=" ### "/>
<ContentControl Content="Test 2"/>
</StackPanel>
在上面的代码中,内容后的空格(“###”),在第二个内容控件中没有显示在结果中。
请参考下面的截图
注意上图中,### 后面没有空格。
谁能告诉我,这是 ContentControl 的行为还是问题?
我的确切方案是将此面板添加为 ItemsControl 的 ItemsPanel。请参考以下代码
<ItemsControl x:Name="itemsControl">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" >
<TextBlock Text="Test 1"/>
<TextBlock>
<Run Text=" ### "/>
</TextBlock>
<TextBlock Text="Test 2"/>
</StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
问候,肖比卡。
解决方案
XAML 会折叠一些空格,这就是无法显示尾随空格的原因。本文档详细解释了这一点。
对于您的代码,我建议您可以使用TextBlock
来替换ContentControl
,我们需要使用Run
in TextBlock
:
<StackPanel Orientation="Horizontal">
<TextBlock Text="Test 1"/>
<TextBlock>
<Run Text=" ### "/>
</TextBlock>
<TextBlock Text="Test 2"/>
</StackPanel>
 
是 XML 的转义字符,表示空格。
更新
请注意,这 
是一个 XML 转义字符,请不要在 C# 代码中使用它。在代码隐藏中,使用
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>
此致。