2012-03-13 22 views
7

Với một số XAML như thế này:AdornerDecorator - có vấn đề gì khi đặt chúng?

<Grid Name="grid"> 
     <AdornerDecorator> 
     <TextBox Height="23" HorizontalAlignment="Left" Name="textBox1" Width="120" /> 
     </AdornerDecorator> 
</Grid> 

Tiện ích WPF Snoop chỉ TextBox1 là con của AdornerDecorator (như bạn mong chờ), nhưng cũng là AdornerLayer rằng AdornerDecorator tạo cũng là một đứa trẻ. Như một adorner tùy chỉnh thêm vào AdornerLayer có thể được hiển thị 'bên ngoài' hộp văn bản, bề mặt vẽ của AdornerLayer phải trải ra bên ngoài quá (có lẽ là tất cả trên cửa sổ).

Vậy, vị trí của AdornerDecorator có ý nghĩa gì đối với vị trí thực tế (cho chúng ta ràng buộc một phần tử giao diện người dùng với adornerLayer tùy chỉnh mà chúng ta đặt trong AdornerLayer)? Tôi biết AdornerLayer.GetAdorner (textBox1) sẽ nhận được lớp adorner đầu tiên trong cây hình ảnh lên từ textbox1, nhưng nó là vấn đề gì ở đó (như ardorner tùy chỉnh được thêm vào lớp và ardoner tùy chỉnh biết phần tử nào bị ràng buộc đến)?

+0

Bạn có thể xem vấn đề của tôi để thấy tầm quan trọng của vị trí của AdornerDecorator. http://stackoverflow.com/questions/11477518/custom-validation-error-template-not-respecting-zindex/11523246#11523246 – Thelonias

Trả lời

20

Câu trả lời ngắn gọn là bạn phải đối phó với các điều khiển chồng chéo các điều khiển khác (trong mặt phẳng chỉ mục z) và bạn quan tâm đến một lớp adorner cụ thể có hiển thị trên các điều khiển chồng chéo hay không. Ví dụ: khi bạn sử dụng một ErrorTemplate, nội dung của nó được hiển thị trong lớp adorner và nếu bạn không cung cấp <AdornerDecorator> trong ứng dụng của mình (nghĩa là bạn chỉ sử dụng một mẫu được cung cấp bởi hầu hết các mẫu Cửa sổ) thì bạn có thể kết thúc bằng this xảy ra.

Bằng cách đặt <AdornerDecorator> nơi chúng tôi muốn, chúng tôi có thể kiểm soát cách hoạt động chồng chéo này.

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