Question

J'ai un contrôle Label WPF que j'essaie de modifier l'apparence d'utiliser un objet System.Drawing.Font fourni par un code hérité. J'ai réussi à définir la plupart des propriétés, mais je me bats avec Strikeout et Underline.

Jusqu'à présent, j'ai:

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;

Comment définissez-vous les propriétés de barrage ou de soulignement des polices? Y at-il un meilleur contrôle à utiliser?

Était-ce utile?

La solution

Je le changerais en contrôle TextBlock. Le contrôle TextBlock a la propriété TextDecorations que vous pouvez utiliser.

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

Ou vous pouvez coller un TextBlock dans une étiquette si vous le souhaitez vraiment (bien que j'utilise simplement le TextBlock lui-même).

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

Consultez la classe TextDecorations .

Je trouve que les TextBlocks sont plus adaptés que les étiquettes dans la plupart des situations. Voici un article de blog sur les différences. La principale différence est qu'une étiquette est un contrôle, alors qu'un TextBlock n'est qu'un FrameworkElement. Une étiquette prend également en charge les clés d’accès.

Autres conseils

En regardant le code que vous avez déjà, il pourrait y avoir un problème. Sur le MSDN, ils font le commentaire sur le mappage de la propriété Windows Form et de la propriété WPF :

  

La taille de police dans WPF est exprimée en 966 pouces et dans les formulaires Windows en 1 706. La conversion correspondante est:

     

Taille de police Windows Forms = taille de police WPF * 72.0 / 96.0.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top