2013-07-17 2 views
6

तो, मैं सी # में WPF के साथ एक GUI चीज़ बना रहा हूं। यह इस तरह दिखता है:(wpf) application.Current.Resources बनाम FindResource

यह अभी नहीं किया है। उन 2 पंक्तियों में डेटा टेबल बनाने का मेरा प्रयास है, और वे एक्सएएमएल में कड़ी-कोडित हैं।

अब, मैं सी # में नई फल बटन कार्यक्षमता को लागू कर रहा हूं। मैं XAML कि नियंत्रित करता है क्या पंक्तियों की पृष्ठभूमि छवियों की तरह दिखना चाहिए में निम्नलिखित शैली है:

<Style x:Key="stretchImage" TargetType="{x:Type Image}"> 
    <Setter Property="VerticalAlignment" Value="Stretch"/> 
    <Setter Property="HorizontalAlignment" Value="Stretch"/> 
    <Setter Property="Stretch" Value="Fill"/> 
</Style> 

तो, कोड में, मैं एक छवि प्रत्येक स्तंभ, col0, col1 के लिए बनाते हैं, और col2,

: और अगर मैं निम्नलिखित कोड का उपयोग,

col0.Style = (Style)Application.Current.Resources["stretchImage"]; 
col1.Style = (Style)Application.Current.Resources["stretchImage"]; 
col2.Style = (Style)Application.Current.Resources["stretchImage"]; 

यह एक नई पंक्ति है कि इस तरह दिखता है कहते हैं 0

आप देख सकते हैं, यह बहुत सही नहीं है ... और खिड़की खींच समस्या exacerbates:

यह नहीं शैली की "मांसपेशियों" संपत्ति का सम्मान हो रहा है।

लेकिन फिर भी, अगर मैं बजाय

col0.Style = (Style)FindResource("stretchImage"); 
col1.Style = (Style)FindResource("stretchImage"); 
col2.Style = (Style)FindResource("stretchImage"); 

को मेरी शैली लोड हो रहा है कोड बदलने यह खूबसूरती से काम करता है:

(फिर से, एप्लिकेशन पूरा नहीं हुआ है, इसलिए नहीं है इसके बारे में चिंता करें), लेकिन मेरा मुख्य प्रश्न यह है: Application.Current.Resources[] और FindResource() के बीच क्या अंतर है? क्यों कोई गुणों को अनदेखा करता है जबकि दूसरा नहीं करता है? और कैसे, यदि संभव हो, तो मुझे ठीक से काम करने के लिए Application.Current.Resources[] मिल सकता है?

+1

प्रासंगिक XAML पोस्ट करें। मैं यहां देख सकता हूं कि एक शैली है। –

+0

तब राइटी: http://pastebin.com/05sKWMST – Pojo

+1

दोस्त, आपका सभी एक्सएएमएल गलत है। मुझे इसे ठीक करने दें और आपको वापस आएं। –

उत्तर

12

संसाधनों को दृश्य पेड़ में लगभग किसी भी तत्व पर परिभाषित किया जा सकता है। FrameworkElement.FindResource() पेड़ को प्रत्येक नोड पर संसाधन की तलाश करेगा, और आखिरकार इसे एप्लिकेशन के लिए सभी तरह से बना देगा। आवेदन। वर्तमान। स्रोत [] यह सब छोड़ देता है और सीधे आवेदन पर संसाधनों के लिए चला जाता है। आप लगभग हमेशा FindResource() का उपयोग करना चाहते हैं ताकि आप विभिन्न बिंदुओं पर शैलियों को ओवरराइड कर सकें।

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