WP7

2011-01-29 19 views
5

में पैनोरामाइटम में प्रोग्रामेटिक रूप से आइटम कैसे जोड़ें, मैं एक ऐसे अनुप्रयोग को विकसित कर रहा हूं जिसमें पैनोरमाइटम की गतिशील संख्या हो, अब वर्तमान में इन्हें 'आइटमसोर्स' प्रॉपर्टी का उपयोग करके पैनोरमा में उनकी एक सूची को जोड़कर जोड़ा गया है।WP7

लेकिन समस्या तब आती है जब मैं बनाई गई पैनोरमाइटम में चीज़ों को जोड़ने का प्रयास करता हूं। अब, मैं एक सूची बॉक्स जोड़ सकता हूं, और यह अपेक्षित काम करता है, लेकिन मैं वास्तव में कुछ जोड़ना चाहता हूं जिस पर मेरा थोड़ा अधिक नियंत्रण है (संभवतः कुछ प्रकार का कस्टम नियंत्रण)।

अब, मुझे कुछ उचित स्थान मिल गए हैं जो मुझे दिखाते हैं कि मेनपेज.एक्सएएमएल को संपादित करके इसे कैसे किया जाए, लेकिन जब से मुझे नहीं पता कि उनमें से कितने मुझे चाहिए (मुझे लगता है) ऐसा पसंद है उस।

समस्या इस तथ्य से जोड़ दी गई है कि पैनोरमाइटम कक्षा में 'आइटम' संपत्ति नहीं है, केवल एक 'सामग्री' एक है (जो मुझे लगता है कि मुझे चाहिए)।

मुझे लगता है मैं किसी भी तरह कस्टम नियंत्रण के लिए एक .xaml/.cs फ़ाइल को परिभाषित करने के लिए और फिर PanoramaItem है कि लागू की जरूरत है लगता है, लेकिन मैं वास्तव में यकीन है कि

उत्तर

3

मुझे लगता जा रहा हूँ यहाँ है कि आप 'नहीं कर रहा हूँ यहां एक एमवीवीएम ढांचे का उपयोग कर रहे हैं, इसलिए यदि नहीं, तो मैं क्षमा चाहता हूं।

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

<controls:Panorama ItemsSource="{Binding PanoViewModels}"> 
    <controls:Panorama.ItemTemplate> 
      <DataTemplate> 
       <ctl:PanoItemControl /> 
      </DataTemplate> 
    </controls:Panorama.ItemTemplate> 
</controls:Panorama> 

स्पष्ट रूप से यह सरल है, लेकिन भर में विचार मिलना चाहिए। अपने नियंत्रण में आप सीधे PanoViewModels के भीतर मौजूद वस्तुओं पर बाध्य कर सकते हैं।

+0

के आधार पर एक का इलाज काम करता है, धन्यवाद! –

2

यदि आप एमवीवीएम और डाटाबेसिंग कर रहे हैं तो बैरेंजर रिडलर का जवाब अच्छा दिखता है।

यदि आप प्रत्येक बच्चे के लिए कस्टम सी # कोड लिखना चाहते हैं, तो आपको प्रत्येक पैनोरमाइटम की सामग्री पर एक कंटेनर (उदा। ग्रिड या स्टैकपैनेल) डालना होगा - और फिर आप उस कंटेनर के बच्चों को जोड़ सकते हैं। मेरे पास सी # कोड हाथ नहीं है, लेकिन यहां लोहे का कोड है - यह स्टैकपैनल में 5 टेक्स्टब्लॉक जोड़ता है, फिर उस स्टैकपैनल को पैनोरामाइटम की सामग्री के रूप में सेट करता है - यह पोर्ट को पोर्ट करना बहुत आसान होना चाहिए।

stack_panel = StackPanel.new 

for i in 1..5 
    t = TextBlock.new 
    t.font_size = i*24 
    t.text = "Line " << i.to_s 
    s.children.add t 
end 

pi = PanoramaItem.new 
pi.header = "Title" 
pi.content = stack_panel 

panorama.items.add pi 

कोड http://script.iron7.com/#/Script/Detail?scriptId=ed9e4e216a474432a9e88523b201965d&userLowerCaseName=stuart