2013-01-17 7 views
6

मैं यह पता लगाने की कोशिश कर रहा हूं कि मेरे ऐप.एक्सएएमएल में एक फ़ॉन्टफैमिली कैसे सेट करें, इस तरह से मैं घोषणा कर सकता हूं कि जहां भी मुझे आवश्यकता हो, उस शैली को घोषित कर सकते हैं। ResourceDictionary में मैं की तरह कुछ आवेदन कर सकते हैं:FontFamily को StaticResource के रूप में कैसे स्टोर करें?

<System:Double x:Key="SmallTextSize">10</System:Double> 

क्या मैं तो क्या करना चाहते है कुछ की तरह:

<FontFamily x:Key="MainFont">Wingdings</FontFamily> 

लेकिन एक अंतर्निहित शैली, केवल एक चीज मैं काम करने के लिए मिल सकता है, जो एक लक्ष्य की आवश्यकता है, और फ़ॉन्ट का एकाधिक घोषणा जो मैं उपयोग करना चाहता हूं। मुझे उस शैली को लागू करने में सक्षम होना चाहिए जो मैं किसी भी नियंत्रण की FontFamily प्रॉपर्टी के साथ समाप्त करता हूं।

यहाँ करीबी है मैं वर्तमान में आ सकते हैं:

<TextBlock Text="{Binding}" Margin="0,0,0,4" FontWeight="Normal" FontFamily="{StaticResource MainFont}" FontSize="14.667" /> 

कैसे करना चाहिए:

<System:String x:Key="MainFont">Wingdings</System:String> 
<Style TargetType="UserControl"> 
     <Setter Property="FontFamily" Value="{StaticResource MainFont}"></Setter> 
</Style> 

यह कार्यान्वयन की तरह है क्योंकि यह उम्मीद MainFont एक FontFamily, नहीं एक स्ट्रिंग के लिए कुछ पर काम नहीं करता मैं इसे संभालता हूँ? धन्यवाद!

+0

यदि आपको अधिक उपयुक्त उत्तर नहीं मिलता है तो यहां एक संभावित कार्यवाही है: 'FontFamily' सेट करने के लिए संलग्न निर्भरता गुण का उपयोग करें। फिर आपको कुछ ऐसा मिलेगा: ''। –

+0

धन्यवाद, लेकिन यह मेरे विपरीत के विपरीत है। मैं एक बहुत बड़े सिल्वरलाइट एप्लिकेशन में शैलियों को मजबूत करने की कोशिश कर रहा हूं, इसलिए उस स्तर पर शैलियों को लागू करने से हजारों संपादन होंगे। –

+0

शायद मुझे कुछ याद आ रहा है, लेकिन यदि आप ऊपर दिए गए उदाहरण में फोंट सेट करने जा रहे हैं, तो यह 'FontFamily = "{StaticResource MainFont}" है, तो इसके लिए संपादन की सटीक संख्या की आवश्यकता होगी। –

उत्तर

11

यकीन नहीं है कि मैं इसे पूरी तरह से समझता हूं, क्योंकि मैं क्या करता हूं;

<FontFamily x:Key="MainFont">WingDings</FontFamily> 

आप तो हर एक को यह घोषणा करने के लिए तो मैं सिर्फ अच्छा लगता है जाएगा बिना कई उदाहरण के लिए इसे लागू करने के बारे में बात कर रहे हैं;

<Object> 
    <Object.Resources> 
     <Style TargetType="TextBlock" BasedOn="{StaticResource YourDefaultTextBlockStyleToInheritOtherProperties}"> 
     <Setter Property="FontFamily" Value="{StaticResource MainFont}"/> 
     </Style> 
    </Object.Resources> 

    <!-- Your FontFamily automatically gets inherited to all children of the object 
     whether your object is say a Grid, or StackPanel, 
     or even an entire UserControl -->  
    <TextBlock Text="ABCDEFG"/> 
    <TextBlock Text="12345"/> 
    <TextBlock Text="!()*&@#"/> 

</Object> 
+0

मुझे लगता है कि मेरा भ्रम शीर्ष घोषणा से उत्पन्न होता है, जो मुझे 'FontFamily' के लिए कोई डिफ़ॉल्ट कन्स्ट्रक्टर नहीं होने के बारे में चेतावनी देता है, लेकिन स्पष्ट रूप से यह काम करता है ... –

+0

कोई डिफ़ॉल्ट कन्स्ट्रक्टर नहीं है? हाहा, उम, क्या? इसे यहां पेस्ट करें हम आपको हल कर देंगे। –

+0

ठीक है, तो ' Wingdings 'मेरे ऐप.एक्सएएमएल में मुझे एक छोटी सी चेतावनी दी गई है कि" कोई डिफ़ॉल्ट कन्स्ट्रक्टर नहीं मिला ", लेकिन, आपने जो पोस्ट किया है उसे देखने के बाद, मैंने इसे इस्तेमाल करने का प्रयास किया शैली, और लो और देखो, यह काम किया। आंकड़े जाओ, कोई विचार नहीं क्यों वीएस2012 मुझे चेतावनी दे रहा है। –

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