Использование System.Drawing.Font с меткой WPF - PullRequest
6 голосов
/ 12 марта 2009

У меня есть элемент управления WPF Label, который я пытаюсь изменить, используя объект 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;

Как установить свойства вычеркивания шрифта или подчеркивания? Есть ли лучший элемент управления для использования?

Ответы [ 2 ]

8 голосов
/ 12 марта 2009

Я бы изменил его на элемент управления 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 - это элемент управления, а TextBlock - просто FrameworkElement. Также Label поддерживает ключи доступа.

1 голос
/ 18 марта 2011

Глядя на код, который у вас уже есть, может быть проблема с ним. В MSDN Windows Form и сопоставление свойств WPF они оставляют комментарий:

Размер шрифта в WPF выражается как одна девяносто шестая дюйма, а в Windows Forms - как одна семидесяти секунда дюйма. Соответствующее преобразование:

Размер шрифта Windows Forms = размер шрифта WPF * 72.0 / 96.0.

...