سؤال

ولدي تحكم WPF تسمية التي أحاول تغيير مظهر باستخدام كائن System.Drawing.Font المقدمة من بعض الرموز القديمة. لقد كنت قادرا على تعيين معظم الخصائص، ولكن أنا تكافح مع مشطوب وتسطير.

وحتى الآن لدي:

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;

وكيف قمت بتعيين يتخلله خط أو تسطير خصائص؟ هل هناك رقابة أفضل للاستخدام؟

هل كانت مفيدة؟

المحلول

وأود أن تغييره إلى عنصر تحكم TextBlock. السيطرة TextBlock لديها ممتلكات TextDecorations يمكنك استخدامها.

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

وأو يمكنك عصا TextBlock داخل تسمية إذا كنت حقا مثل (على الرغم من أنني كنت مجرد استخدام TextBlock في حد ذاته).

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

وإلقاء نظرة على فئة rel="noreferrer"> TextDecorations .

وأجد أن TextBlocks أكثر ملاءمة من تسميات في معظم الحالات. وهنا بلوق وظيفة حول الاختلافات. الفرق كبير يجري أن التسمية هي السيطرة في حين أن TextBlock هو مجرد FrameworkElement. أيضا تسمية تدعم مفاتيح الوصول.

نصائح أخرى

وعند النظر إلى رمز لديك بالفعل، قد تكون هناك مشكلة في ذلك. على MSDN على نموذج Windows ورسم الخرائط WPF الملكية أنها تجعل تعليق:

<اقتباس فقرة>   

ويتم التعبير عن حجم الخط في WPF كما السادسة والتسعين واحد من شبر واحد، وفي Windows Forms كما الثانية والسبعين واحدة من شبر واحد. تحويل المقابلة هو:

     

ونماذج Windows حجم الخط = WPF حجم الخط * 72.0 / 96.0.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top