6

我有一个 WPF 标签控件,我正在尝试更改使用某些遗留代码提供的 System.Drawing.Font 对象的外观。我已经能够设置大部分属性,但我在 Strikeout 和 Underline 中苦苦挣扎。

到目前为止,我有:

System.Drawing.Font font = FontFromLegacyCode();

System.Windows.Controls.Label label = new System.Windows.Controls.Label();
label.FontFamily = new System.Windows.Media.FontFamily( font.Name );
label.FontWeight = font.Bold ? System.Windows.FontWeights.Bold : System.Windows.FontWeights.Regular;
label.FontStyle = font.Italic ? System.Windows.FontStyles.Italic : System.Windows.FontStyles.Normal;
label.FontSize = font.Size;

如何设置字体删除线或下划线属性?有没有更好的控件可以使用?

4

2 回答 2

8

我会将其更改为 TextBlock 控件。TextBlock 控件具有您可以使用的 TextDecorations 属性。

<TextBlock Name="textBlock" TextDecorations="Underline, Strikethrough" />

或者,如果您真的喜欢,您可以将 TextBlock 粘贴在 Label 中(尽管我只使用 TextBlock 本身)。

<Label Name="label">
    <TextBlock Name="textBlock" TextDecorations="Underline, Strikethrough" />
</Label>

看看TextDecorations类。

我发现在大多数情况下,TextBlocks 比 Labels 更合适。这是一篇关于差异的博客文章。主要区别在于 Label 是 Control 而 TextBlock 只是 FrameworkElement。Label 也支持访问键。

于 2009-03-12T08:17:14.453 回答
1

查看您已经拥有的代码,它可能存在问题。在Windows 窗体和 WPF 属性映射的 MSDN 上,他们发表评论:

WPF 中的字体大小表示为一英寸的九十六分之一,在 Windows 窗体中表示为一英寸的七十秒。对应的转换为:

Windows 窗体字体大小 = WPF 字体大小 * 72.0 / 96.0。

于 2011-03-17T22:48:11.210 回答