在WPF中使用TextBlock进行字距(跟踪)?

时间:2010-10-08 21:46:46

标签: wpf tracking textblock

在WPF中使用TextBlock进行字母间距(跟踪)的最佳方法是什么?

我认为TextBlock.Typography会照顾这个,但事实并非如此。什么是最好的方法?

2 个答案:

答案 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>