2010-12-09 8 views
12

मैं दृश्य पेड़ से फ्रेमवर्क एलिमेंट को हटाना चाहता हूं। चूंकि FrameworkElement एक जनक संपत्ति है, यह वहाँ से निकाल कर इस समस्या को हल करने से पहुंच सकते हैं:एक सामान्य तरीके से दृश्य पेड़ से किसी आइटम को हटाने के लिए

FrameworkElement childElement; 
if(childElement != null && childElement.Parent != null) // In the visual tree 
{ 
    // This line will, of course not complie: 
    // childElement.Parent.RemoveFromChildren(childElement); 
} 

समस्या यह है कि FrameworkElement के जनक संपत्ति DependencyObject है, जो बच्चों का बोध भी नहीं है की है।

FrameworkElement childElement; 
if(childElement != null && childElement.Parent != null) // In the visual tree 
{ 
    if(childElement.Parent is Panel) 
    { 
    (childElement.Parent as Panel).Children.Remove(childElement); 
    } 
    if(childElement.Parent is Border) 
    { 
    (childElement.Parent as Border).Child = null; 
    } 
} 

जाहिर है यह नहीं है: तो केवल एक चीज मैं इस समस्या के बारे में जा रहा देख सकते हैं जनक कास्टिंग अगर यह एक सीमा, पैनल आदि (तत्वों है कि बच्चों की धारणा है) है देखने के लिए और वहाँ से इसे हटाने के माध्यम से होता है एक बहुत ही लचीला समाधान और सामान्य नहीं है। क्या कोई दृश्य वृक्ष से तत्व को हटाने पर अधिक सामान्य दृष्टिकोण सुझा सकता है?

उत्तर

6

मुझे नहीं लगता कि एक आसान तरीका है। दरअसल, ऐसा करने के लिए एक आसान सामान्य तरीका नहीं हो सकता है। WPF बहुत लचीला है और आप एक टेम्पलेट के साथ कस्टम नियंत्रण बना सकते हैं जिसमें कस्टम टेम्पलेट्स के साथ 3 अलग-अलग स्थानों में 3 बच्चों को प्रदर्शित किया जाता है।

आप सबसे अच्छा क्या कर सकते हैं सभी बुनियादी नियंत्रणों को ध्यान में रखते हैं और उन्हें if-else सीढ़ी में शामिल करते हैं। ये Panel, Border, ContentControl, ItemsControl, आदि

+0

शर्मिंदा बच्चों के साथ वस्तुओं के लिए कोई सामान्य इंटरफेस नहीं है। सूची के लिए धन्यवाद, मैंने ContentControl या ItemControl के बारे में नहीं सोचा है ... अब यह करेगा! –

+3

@Gergely: मैं WPF में सामग्री मॉडल के बारे में एमएसडीएन पर एक लेख में आया था। हालांकि यह आपके लिए उपयोगी हो सकता है। http://msdn.microsoft.com/library/bb613548.aspx – decyclone

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