2009-07-31 31 views
11

Tôi đang phát triển ứng dụng Silverlight 3 và nhận được lỗi này thực sự lạ khi tôi cố thêm đối tượng vào Canvas. Mã của tôi như sau:Trẻ em.Thêm (mục) giá trị không nằm trong phạm vi dự kiến ​​

for (int i = 0; i < person.Children.Count; i++) 
{ 
    //Add children in same position as parent 
    Person child = person.Children[i]; 
    child.x_PositionTransform.X = person.x_PositionTransform.X; 
    child.x_PositionTransform.Y = person.x_PositionTransform.Y; 
    child.Click += new RoutedEventHandler(person_Click); 
    x_LayoutRoot.Children.Add(child); 
} 

Lần đầu tiên tôi sử dụng, nó hoạt động như mong đợi. Tuy nhiên, khi tôi nhấn x_LayoutRoot.Children.Add (con) sau khi nhấp vào một đối tượng Person đã được tạo bằng cách sử dụng mã này, tôi nhận được một ArgumentException nói với tôi rằng "Giá trị không nằm trong phạm vi dự kiến."

Tuy nhiên, khi tôi thêm mã sau đây trước khi thêm con vào x_LayoutRoot.Children, sự cố sẽ biến mất.

child.SetValue(Canvas.NameProperty, "child" + objCount++); 

Tại sao điều này lại xảy ra? Đây có phải là lỗi Silverlight hay không (nhiều khả năng) tôi chỉ thiếu một thứ gì đó?

+0

bạn có thể sử dụng FrameworkElement.NameProperty thay vì Canvas.NameProperty –

Trả lời

24

Tôi nghĩ rằng tôi đã tìm ra nguyên nhân của việc này: Tôi đã thêm nhiều đối tượng Person có cùng tên. Vì vậy, nếu có ai có vấn đề này trong tương lai, hãy chắc chắn rằng tất cả các đối tượng của bạn có tên duy nhất!

+0

Đã cùng một vấn đề nhiều lần và bây giờ tôi đang đặt là nguyên nhân có thể xảy ra nhất đối với NullReferenceExceptions trên một cuộc gọi '... Children.Add (obj)'. – JeroenEijkhof

1
Person child = person.Children[i]; 
child.x_PositionTransform.X = person.x_PositionTransform.X; 
child.x_PositionTransform.Y = person.x_PositionTransform.Y; 
child.Click += new RoutedEventHandler(person_Click);   

child.SetValue(Canvas.NameProperty, "child" + objCount++); //! 

x_LayoutRoot.Children.Add(child); 

bạn có thể thêm khác nhau NameProperty trước khi thêm một đứa trẻ

Các vấn đề liên quan