什么决定了 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.
我有 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.