2010-06-03 11 views
6

WPF विजुअलाइज़र दृश्य ट्री कैनवासदृश्य निर्दिष्ट पहले से ही एक और दृश्य के एक बच्चे को या एक CompositionTarget

canvas.Children.Add पाली की जड़ है |> उपेक्षा

दृश्य निर्दिष्ट

    है
  1. पहले से ही किसी अन्य विज़ुअल का एक बच्चा या
  2. संरचना संरचना का रूट है।

ऐसा नहीं लगता कि यह 1 है), सुनिश्चित नहीं है कि 2) क्या है?

दृश्य स्टूडियो 2010 का उपयोग करना, एफ # 2.0, WPF, ... XAML नहीं

उत्तर

12

यह एक प्रासंगिक कोड नमूना बिना समस्या का निदान करने के लिए थोड़ा मुश्किल है, लेकिन शायद समस्या यह है कि आप एक ही बहुभुज जोड़ने की कोशिश की है कैनवास के बच्चों को दो बार। अगर मैं अपने त्रुटि संदेश के साथ एक और canvas.Children.Add poly यह दुर्घटनाओं जोड़ने

type SimpleWindow() as this = 
    inherit Window() 

    do 
     let makepoly size corners = 
      let size = 192.0 
      let angle = 2.0 * Math.PI/float corners 
      let getcoords size angle = new Point(size * cos angle, size * sin angle) 

      let poly = new Polygon(Fill = Brushes.Red) 
      poly.Points <- new PointCollection([for i in 0..corners-1 -> getcoords size (float i * angle)]) 
      poly 

     let canvas = new Canvas(HorizontalAlignment = HorizontalAlignment.Center, 
           VerticalAlignment = VerticalAlignment.Center) 

     let poly = makepoly 192.0 5 
     Canvas.SetLeft(poly, canvas.Width/2.0) 
     Canvas.SetTop(poly, canvas.Width/2.0) 

     canvas.Children.Add poly |> ignore //this works 
     this.AddChild canvas |> ignore 

SimpleWindow().Show() 

:

इस कोड मैं burped अपने त्रुटि पुन: पेश करने के लिए है।

canvas.Children.Add poly |> ignore 
canvas.Children.Add poly |> ignore //this fails, poly already exists on the canvas 

क्रम त्रुटि को ठीक करने के लिए, मैं पहली बार canvas.Children.Remove बुलाया विशिष्ट बच्चा है कि आदेश किसी अन्य के द्वारा इसे बदलना में मौजूद था दूर करने के लिए।

canvas.Children.Add poly |> ignore 
canvas.Children.Remove poly 
canvas.Children.Add poly |> ignore //this works, because the previous version is gone 

मुझे आशा है कि यह आपकी समस्या को हल करे।

+0

धन्यवाद सीएफर्न। मैं अब WPF पर थोड़ा और अधिक हूँ। देर से प्रतिक्रिया के लिए क्षमा चाहते हैं ... –

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