Pergunta

Eu tenho um controle Label WPF que eu estou tentando mudar a aparência de usar um objeto System.Drawing.Font fornecido por algum código legado. Eu tenho sido capaz de definir a maioria das propriedades, mas estou lutando com Strikeout e sublinhado.

Até agora eu tenho:

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;

Como você definir o strikeout fonte ou propriedades sublinhado? Existe uma melhor controle para uso?

Foi útil?

Solução

Gostaria de mudá-lo para um controle TextBlock. O controle TextBlock tem a propriedade TextDecorations você pode usar.

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

Ou você pode furar um TextBlock dentro de um rótulo, se você realmente gosta (embora eu tinha acabado de usar o TextBlock por si só).

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

Tenha um olhar para o TextDecorations classe .

Eu acho que TextBlocks são mais adequados do que rótulos na maioria das situações. Aqui está um blog sobre as diferenças. A principal diferença é que um Label é um controle enquanto um TextBlock é apenas um FrameworkElement. Também um teclas de acesso suportes de etiqueta.

Outras dicas

Olhando para o código que você já tem, pode haver um problema com ele. Na MSDN on Windows Form e mapeamento de propriedade WPF eles fazem o comentário:

Tamanho da fonte em WPF é expresso como 1/96 de uma polegada, e no Windows Forms como 1/72 de uma polegada. A conversão correspondente é:

Windows Forms font size = WPF tamanho da fonte * 72,0 / 96,0.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top