2012-01-30 9 views
6

करने के लिए एक ContentControl से एक UserControl ले जाएँ मैं एक ContentControl से कोड में एक-दूसरे से एक UserControl ले जाना चाहते हैं:
:एक WPF अनुप्रयोग में एक और एक प्रोग्राम के रूप में

myContentControl2.Content = myUserControl; 

इस मामले में मैं कोई त्रुटि मिलती है निर्दिष्ट तत्व पहले से ही किसी अन्य तत्व का तार्किक बच्चा है। इसे पहले डिस्कनेक्ट करें।

एक ControlControl class description में मैं एक RemoveVisualChild method देख सकते हैं, लेकिन जब मैं कोड में इसका इस्तेमाल करने के प्रयास करते समय मुझे अज्ञात प्रणाली त्रुटि

myContentControl1.RemoveVisualChild(myUserControl);//here I get an "Unknown method" error 

कहाँ मैं गलत हूँ मिल सकता है?
कंटेंट कंट्रोल से UserControl को कोड-बैक में दूसरे स्थान पर कैसे स्थानांतरित करें?

+0

उत्तर – Maheep

+0

@Mheheep अपडेट किया गया: हाँ, मैंने जो जवाब दिया उसके साथ। – Clemens

+0

@ क्लेमेंस: हाँ। मैंने जो अपडेट किया है वह आपके उत्तर के समान है। लेकिन मैंने स्वतंत्र रूप से समाधान को अद्यतन करने की कोशिश की। मैं आपके उत्तर के साथ स्वीकार किए गए एक के रूप में ठीक हूँ। लेकिन इसके बारे में भी खुश मैंने इसे सीखा। – Maheep

उत्तर

2

सेट

myContentControl1.Content = null; 

myContentControl2.Content = myUserControl; 

की स्थापना वैसे पहले myContentControl1 से myUserControl दूर करने के लिए, दृश्य पेड़ के साथ तार्किक पेड़ को भ्रमित नहीं है। एमएसडीएन में Trees in WPF में अधिक जानकारी प्राप्त करें।

+0

हां, यह काम करता है, धन्यवाद! और पेड़ों के बारे में आपका ध्यान भी सहायक है, +1 – rem

1

In a ControlControl class description I can see a RemoveVisualChild method, but when I try to use it in code I get an Unknown method error

इसका कारण यह है RemoveVisualChild और RemoveLogicalChild संरक्षित हैं तरीकों जो आप अपने वर्ग में सीधे उपयोग नहीं कर सकते है। यदि आप इस विधि का उपयोग करना चाहते हैं तो ContentControl से व्युत्पन्न कक्षा बनाएं और उस वर्ग में कुछ सार्वजनिक विधि रैपर का उपयोग करके इन विधियों का पर्दाफाश करें।

myContentControl1 के तार्किक पेड़ से myUserControl को हटाने के लिए बेहतर विकल्प यह है कि इसे किसी अन्य नियंत्रण के तार्किक पेड़ को जोड़ने से पहले। इसे प्राप्त करने के लिए आप ContentmyContentControl1 की संपत्ति को कुछ और null पर सेट कर सकते हैं।

+1

संरक्षित विधियों का उपयोग करने के बारे में इसे स्पष्ट करने के लिए धन्यवाद, +1 – rem

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