2009-03-12 15 views
6

मेरे पास एक डब्ल्यूपीएफ लेबल नियंत्रण है जिसे मैं सिस्टम का उपयोग करने की उपस्थिति को बदलने की कोशिश कर रहा हूं। कुछ विरासत कोड द्वारा आपूर्ति की गई ड्रॉइंग ऑब्जेक्ट। मैं अधिकांश संपत्तियों को सेट करने में सक्षम हूं, लेकिन स्ट्राइकआउट और अंडरलाइन के साथ संघर्ष कर रहा हूं।एक सिस्टम का उपयोग करना। ड्रॉइंग। डब्लूपीएफ लेबल

अब तक मेरे पास है:

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; 

आप फ़ॉन्ट स्ट्राइक आउट कैसे निर्धारित या गुण को रेखांकित करते हैं? क्या उपयोग करने के लिए एक बेहतर नियंत्रण है?

उत्तर

8

मैं इसे टेक्स्टब्लॉक नियंत्रण में बदल दूंगा। टेक्स्टब्लॉक नियंत्रण में टेक्स्ट डिकोरेशन प्रॉपर्टी है जिसका आप उपयोग कर सकते हैं।

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

या आप एक लेबल यदि आप वास्तव में की तरह (हालांकि मैं सिर्फ अपने आप में TextBlock का उपयोग करेंगे) के अंदर एक TextBlock छड़ी कर सकते हैं।

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

TextDecorations कक्षा पर एक नज़र डालें।

मुझे लगता है कि अधिकांश स्थितियों में टेक्स्टब्लॉक्स लेबल से अधिक उपयुक्त हैं। मतभेदों के बारे में blog post यहां दिया गया है। मुख्य अंतर यह है कि एक लेबल एक नियंत्रण है जबकि टेक्स्टब्लॉक सिर्फ एक फ्रेमवर्क एलिमेंट है। इसके अलावा एक लेबल एक्सेस कुंजी का समर्थन करता है।

+0

बिल्कुल सही, धन्यवाद। मुझे पहले स्थान पर टेक्स्टब्लॉक का उपयोग करना चाहिए था। – bstoney

1

आपके पास पहले से मौजूद कोड को देखते हुए, इसमें कोई समस्या हो सकती है। एक इंच से एक सत्तर-दूसरा विण्डोज़ फॉर्म्स में WPF में

अक्षरों का आकार एक इंच से एक नब्बे-छठे रूप में व्यक्त किया जाता है, और: Windows Form and WPF Property mapping पर MSDN पर वे टिप्पणी करते हैं। संबंधित रूपांतरण है:

विंडोज फॉर्म फ़ॉन्ट आकार = WPF फ़ॉन्ट आकार * 72.0/96.0।

+1

क्योंकि मैंने अभी इसका उपयोग किया है, भले ही आप WinForms तत्व होस्ट में WPF का उपयोग कर रहे हों, आप आकार को '(फ़ॉन्ट आकार * 9 6)/72' के रूप में बदल सकते हैं। ऐसा लगता है कि आपके पास एक विंडोज़ फॉर्म वातावरण में एक संग्रहीत फ़ॉन्ट आकार है, और उसे एक होस्टब्लॉक या टेक्स्टबॉक्स जैसे होस्ट किए गए WPF नियंत्रण के लिए WPF FontSize में अनुवाद करने की आवश्यकता है। –

संबंधित मुद्दे