什么决定了 WPF 中文本的修剪方式

What determines the way text is trimmed in WPF

我有 2 windows 7 台机器,它们具有相同的自定义 .net 4.5.1 WPF 应用程序二进制文件和相同版本的 .net 框架(4.5.1),连接到相同的监视器相同的大小和分辨率。我有一个包含相同数据的 TextBlock,但文本对于框来说太长了。 windows 两台机器上的文本都设置为 100% 放大。

由于某些奇怪的原因,文本在每个系统的不同位置被修剪 (WordElipsis),因此它看起来不同并且以不确定的方式表现,因为两台机器上的其他一切都相同。

WPF 使用哪些因素来决定在何处修剪文本?

<TextBlock 
    Margin="5,5,0,0" 
    Grid.Row="0"  
    Grid.Column="1"  
    Grid.ColumnSpan="2"  
    x:Name="StackPanel"  
    FontSize="10"  
    FontFamily="Gill Sans MT"  
    TextTrimming="WordEllipsis"  
    TextWrapping="Wrap"  
    ToolTip="{Binding MyThing.Title}">
        <local:BindableInline x:Name="titleTextBlock" Text="{Binding MyThing.Title}"/>
</TextBlock>

花了一段时间才弄明白,但事实证明问题出在字体上——其中一台机器上没有安装 Gill Sans MT,这意味着它正在回退到另一种略有不同的内置字体,从而导致修剪发生在不同的地方。解决方法是将字体安装到机器上或 package the font with the application.