2009-03-26 25 views
5

Tôi có một Panel tùy chỉnh mà sau khi thay đổi kích thước có sự kiện LayoutUpdated và ArrangeOverride được gọi hai lần.Xác định nguyên nhân khiến LayoutUpdate/ArrangeOverride xuất hiện?

Vì vậy, ban đầu MeasureOverride và ArrangeOverride làm việc của họ một lần khi mở cửa sổ khách hàng. Sau đó, nếu tôi phóng to cửa sổ, mỗi cửa sổ được gọi hai lần. Kích thước có sẵn và cuối cùng tương ứng không khác nhau giữa mỗi lần lặp vì vậy tôi không chắc chắn những gì đang bắt đầu này.

Có cách nào để xác định nguyên nhân của việc vô hiệu hóa không?

+0

Tôi đang gặp sự cố đã hỏi một câu hỏi tương tự: http://stackoverflow.com/questions/1577240/wpf-layoutupdated-event-firing-repeatedly –

Trả lời

6

Tôi nghĩ rằng nó được gọi hai lần vì thay đổi Chiều cao và Chiều rộng. Tôi nghĩ rằng cả hai thuộc tính này đều ảnh hưởng đến Measure và do đó có một layout cho mỗi cái.

0

Tôi sẽ nói cách dễ nhất là đặt điểm ngắt cho từng phương pháp và quan sát ngăn xếp cuộc gọi. Bạn sẽ có thể thấy những gì đã xảy ra trước khi phương pháp của bạn được gọi.

+6

Tôi sẽ không nhận được dấu vết ngăn xếp cho điều đó làm mất hiệu lực kiểm soát. –

3

Có cách nào để xác định nguyên nhân của việc vô hiệu hóa không?

Việc vô hiệu hóa thường do sự thay đổi của DependencyProperty mà trong đó FrameworkPropertyMetadataOptions có cờ AffectsMeasure/AffectsOverride.

Như Pavel đã nói - có khả năng việc vô hiệu hóa sẽ kích hoạt cho cả hai thay đổi về Chiều rộng và Chiều cao.

Dù sao, bạn không nên dựa vào số lượng các hiệu lực đó.

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