2010-01-03 10 views
8

मैं सोच रहा था कि उपलब्ध FontStyle एस और FontWeight एस ComboBox पर उपलब्ध होना संभव होगा?बाध्यकारी फ़ॉन्ट स्टाइल और फ़ॉन्टवेइट्स को डब्ल्यूपीएफ कॉम्बोबॉक्स

उदाहरण के लिए, एक combobox को फोंट की सूची बाध्य करने के लिए आप का उपयोग कर सकते हैं:

FontStyleComboBox.ItemsSource = .... 
FontWeightComboBox.ItemsSource = .... ? 

यह System.Windows.FontWeights और System.Windows.FontStyles पर प्रतिबिंब की आवश्यकता होती है सकते हैं:

FontComboBox.ItemsSource = Fonts.SystemFontFamilies; 

मैं भी के लिए कुछ मिल सकता है कक्षाएं या उससे बेहतर तरीका होगा?

धन्यवाद

उत्तर

11

फ़ॉन्ट परिवारों कॉम्बो के लिए:

<ComboBox Name="Families" ItemsSource="{x:Static Fonts.SystemFontFamilies}"/> 

फ़ॉन्ट शैली के लिए:

<ComboBox Name="Styles"> 
    <x:Static Member="FontStyles.Normal"/> 
    <x:Static Member="FontStyles.Italic"/> 
    <x:Static Member="FontStyles.Oblique"/> 
</ComboBox> 

और फ़ॉन्ट वजन के लिए:

<ComboBox Name="Weights"> 
    <x:Static Member="FontWeights.Black"/> 
    <x:Static Member="FontWeights.Bold"/> 
    <x:Static Member="FontWeights.DemiBold"/> 
    <x:Static Member="FontWeights.ExtraBlack"/> 
    <x:Static Member="FontWeights.ExtraBold"/> 
    <x:Static Member="FontWeights.ExtraLight"/> 
    <x:Static Member="FontWeights.Heavy"/> 
    <x:Static Member="FontWeights.Light"/> 
    <x:Static Member="FontWeights.Medium"/> 
    <x:Static Member="FontWeights.Normal"/> 
    <x:Static Member="FontWeights.Regular"/> 
    <x:Static Member="FontWeights.SemiBold"/> 
    <x:Static Member="FontWeights.Thin"/> 
    <x:Static Member="FontWeights.UltraBlack"/> 
    <x:Static Member="FontWeights.UltraBold"/> 
    <x:Static Member="FontWeights.UltraLight"/> 
</ComboBox> 

और अब के लिए परीक्षण:

<TextBlock 
    Text="This is some text." 
    FontFamily="{Binding ElementName=Families, Path=SelectedItem}" 
    FontStyle="{Binding ElementName=Styles, Path=SelectedItem}" 
    FontWeight="{Binding ElementName=Weights, Path=SelectedItem}"/> 
+0

हाँ - यह शायद इसके बारे में जाने का सबसे उचित तरीका है, धन्यवाद :) – Haemoglobin

3

एक और -

<ComboBox 
     Name="FontStretches"> 
     <x:Static 
      Member="FontStretches.Condensed" /> 
     <x:Static 
      Member="FontStretches.Expanded" /> 
     <x:Static 
      Member="FontStretches.ExtraCondensed" /> 
     <x:Static 
      Member="FontStretches.ExtraExpanded" /> 
     <x:Static 
      Member="FontStretches.Medium" /> 
     <x:Static 
      Member="FontStretches.Normal" /> 
     <x:Static 
      Member="FontStretches.SemiCondensed" /> 
     <x:Static 
      Member="FontStretches.SemiExpanded" /> 
     <x:Static 
      Member="FontStretches.UltraCondensed" /> 
     <x:Static 
      Member="FontStretches.UltraExpanded" /> 
    </ComboBox> 
2

महान पोस्ट! मैं बस फ़ॉन्ट वजन पर कुछ जोड़ना चाहता था। FontWeights क्लास में ऊपर सूचीबद्ध सभी स्थैतिक गुण हैं और वे केवल 1 से 999 तक एक संख्या को समाहित करते हैं। विभिन्न नामों वाले कुछ गुण समान मूल्यों को समाहित करते हैं, इसलिए आप डुप्लिकेट के साथ समाप्त होते हैं। इसके अलावा उपरोक्त उदाहरण में उन्हें क्रम में नहीं था।

रेफरी: - FontWeights Class

यहाँ वे क्रम में हैं, हर एक के लिए वजन संख्या दिखा हटाया डुप्लिकेट, और टिप्पणियों:

 <!--100--> 
     <x:Static 
     Member="FontWeights.Thin" /> 
     <!--200--> 
     <x:Static 
     Member="FontWeights.ExtraLight" /> 
     <!--300--> 
     <x:Static 
     Member="FontWeights.Light" /> 
     <!--400--> 
     <x:Static 
     Member="FontWeights.Normal" /> 
     <!--500--> 
     <x:Static 
     Member="FontWeights.Medium" /> 
     <!--600--> 
     <x:Static 
     Member="FontWeights.SemiBold" /> 
     <!--700--> 
     <x:Static 
     Member="FontWeights.Bold" /> 
     <!--800--> 
     <x:Static 
     Member="FontWeights.ExtraBold" /> 
     <!--900--> 
     <x:Static 
     Member="FontWeights.Heavy" /> 
     <!--950--> 
     <x:Static 
     Member="FontWeights.ExtraBlack" /> 
1

और पिछले एक, मुझे लगता है:

<ComboBox Name="FontSizes"> 
    <ComboBoxItem Content="8" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="9" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="10" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="11" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="12" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="14" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="16" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="18" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="20" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="22" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="24" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="26" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="28" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="36" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="48" HorizontalContentAlignment="Right"/> 
    <ComboBoxItem Content="72" HorizontalContentAlignment="Right"/> 
</ComboBox> 

मैंने इंटरनेट पर सभी की खोज की, लेकिन यह पता नहीं लगा कि फ़ॉन्ट आकार की मानक सूची कैसे प्राप्त करें। ऐसा लगता है कि हमें इसे हार्डकोड करना है।