我正在尝试像下面的代码片段一样在堆栈面板中添加内容控件
<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将折叠一些空格,这就是为什么不能显示尾随空格的原因。 document对此进行了详细说明。
对于您的代码,我建议您可以使用TextBlock
代替ContentControl
,我们需要使用Run
中的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>
最诚挚的问候。