我有两台Windows 7机器,它们具有相同的自定义.net 4.5.1 WPF应用程序二进制文件和两者(4.5.1)上相同版本的.net框架,以相同的大小和分辨率连接到相同的监视器。我有一个TextBlock具有相同的数据,但文本太长了框。两台机器上的文本设置为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>
答案 0 :(得分:2)
花了一段时间来搞清楚,但事实证明问题是字体 - Gill Sans MT没有安装在其中一台机器上,这意味着它回落到另一种内置字体略有不同导致修剪发生在另一个地方。修复方法是将字体安装到计算机上或package the font with the application。