मेरे डब्ल्यूपीएफ आवेदन में मेरे पास एक कैनवास है जिसमें मैं कुछ ड्राइंग करता हूं। इससे पहले मैंने पीछे कोड में ड्राइंग को संभाला था, लेकिन अब मैंने व्यूमोडेल में सबकुछ निकाल दिया है। यह मुझे कुछ चुनौतियां देता है ..बाध्यकारी डब्ल्यूपीएफ कैनवास बच्चों को एक अवलोकन करने योग्य चयन
मेरे पास स्ट्रोक रखने वाले कुछ इंकपेंटर ऑब्जेक्ट्स हैं। अब
// Build an InkPresenter:
var someInkPresenter = BuildInkPresenter(..);
//_myCanvas is the <Canvas> I want to display it in:
_myCanvas.Children.Add(someInkPresenter);
- XAML कि _myCanvas मैं इस अलग ढंग से करने की ज़रूरत धारण के कोड-पीछे में InkPresenter निर्माण नहीं: इस तरह - Earier मैं उन्हें बच्चों के रूप में कैनवास के लिए कोड में पीछे गयी। मुझे क्या करना चाहते हैं एक InkPresenter बना सकते हैं और एक संग्रह में जोड़ने के लिए है:
public ObservableCollection<InkPresenter> Drawings;
मेरे समस्या अब यह ObservableCollection करने के लिए बाध्य करने के लिए कैनवास कैसे है - और जब संग्रह में जोड़ा InkPresenters दिखाया गया है। क्या मैं डेटा बाइंडिंग का उपयोग करके इसे किसी भी तरह से प्राप्त कर सकता हूं?
Thx! उचित लगता है। इसे देखेंगे! – stiank81
यह आम तौर पर आपके द्वारा लिया जाने वाला दृष्टिकोण है, लेकिन इस मामले में आप शायद मुद्दों में भाग ले रहे हैं क्योंकि इंकपेंटर्स कैनवास के प्रत्यक्ष बच्चे नहीं होंगे जैसे कि जब आप उन्हें कोड में जोड़ते हैं। इसके बजाय विजुअल ट्री के पास प्रत्येक इंकपेंटर आइटम के आस-पास एक अतिरिक्त सामग्री प्रस्तुतकर्ता होगा। इस विधि को काम करने के लिए आपको प्रत्येक इंकपेंटर से वास्तविक डेटा (स्ट्रोक) खींचना और अपने वीएम में उन लोगों का संग्रह संग्रहीत करना चाहिए। फिर आप एक कस्टम आइटम नियंत्रण बना सकते हैं जो एक InkPresenter को वापस करने के लिए GetContainerForItemOverride को ओवरराइड करता है। –
आपके साथ जॉन से सहमत हो सकता है ... यह एक आइटम नियंत्रण है। यह UIElement का उपयोग डिफ़ॉल्ट कंटेनर के रूप में करता है ... – Anvaka