在WPF中使用TextBlock进行字母间距(跟踪)的最佳方法是什么?
我认为TextBlock.Typography会照顾这个,但事实并非如此。什么是最好的方法?
答案 0 :(得分:0)
似乎这个问题不容易解决。你可以google并找到类似这样的http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/789c3e1b-e3ae-476f-b37f-d93ef6d0cb7b/(带字形的方法)。但是考虑到String是可枚举集合的事实,有时你可以用这样的标记来解决你的问题:
<Grid>
<ItemsControl>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="1"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemsSource>
<System:String>
Hello World
</System:String>
</ItemsControl.ItemsSource>
</ItemsControl>
</Grid>
调整此标记(面板,模板),您可以获得任何所需的字符串布局。当然,您可以将此标记分隔为特殊的UserControl。 就像特定情况的变体一样。
答案 1 :(得分:0)
我使用了Kreol建议的方法,发现这是有效的,只是有些字母比其他字母宽。
使用UniformGrid时,每列的定义宽度相同。这导致字母之间的间距可变。
相反,我使用了一个水平方向的堆叠面板,每个元素都有一个左边距:
<Grid>
<ItemsControl ItemsSource="{Binding SomeString}" HorizontalAlignment="Center" VerticalAlignment="Center">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Control.Margin" Value="1,0,0,0"/>
<Setter Property="Control.Foreground" Value="#1E395B"/>
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
</Grid>