Tôi đang cố gắng để đạt được một sử dụng bất thường của một Adorner. Khi bạn di chuột qua RichTextBox, một Adorner (xem sơ đồ bên dưới) sẽ xuất hiện phía trên nó, cho phép bạn thêm một danh sách các chuỗi vào một ListBox chứa trong Adorner. Điều này được sử dụng để thêm "thẻ" (à la Flickr) vào đoạn văn chứa trong phần tử được tô điểm.WPF adorner với các điều khiển bên trong
Thứ nhất: là này thậm chí có thể?
Hầu hết các ví dụ về Adorners cho thấy cách ghi đè phương pháp OnRender của Adorner để thực hiện những việc tầm thường như vẽ hình dạng. Tôi đã có thể sử dụng điều này để hiển thị một tập hợp các hình chữ nhật tạo đường viền màu xám của Adorner, cũng tự động thay đổi kích cỡ nếu chiều cao của RichTextBox tăng do thêm dòng văn bản trong khi Adorner được hiển thị.
protected override void OnRender(DrawingContext drawingContext)
{
SolidColorBrush grayBrush = new SolidColorBrush();
grayBrush.Color = Color.FromRgb(153, 153, 153);
// left
drawingContext.DrawRectangle(grayBrush, null, new System.Windows.Rect(1, 1, 5, ActualHeight));
// right
drawingContext.DrawRectangle(grayBrush, null, new System.Windows.Rect(ActualWidth - 6, 1, 5, ActualHeight));
//bottom
drawingContext.DrawRectangle(grayBrush, null, new System.Windows.Rect(1, ActualHeight, ActualWidth - 2, 5));
// for reasons unimportant to this example the top gray bar is rendered as part of the RichTextBox
}
Tuy nhiên, việc thêm điều khiển có vấn đề hơn một chút. Nói chung, tính năng quảng cáo của WPF yêu cầu thêm điều khiển con trong mã thay vì XAML. Sử dụng kỹ thuật được mô tả trong DrawingContext adorner - possible to draw stackpanel?, tôi đã học cách thêm điều khiển con (như một TextBox) vào một Adorner mà không có bất kỳ vấn đề nào trong trình khởi tạo của Adorner.
Sự cố, tuy nhiên, là vị trí của các kiểm soát đó trong Adorner.
Nếu tôi có thể tạo lưới bằng nền màu xám và định vị nó ở dưới cùng của Adorner, tôi nên làm tốt. Tôi sẽ giả định (hy vọng) rằng những thứ như tự động thay đổi kích thước của Adorner dựa trên kích thước thay đổi của lưới đó như là thẻ được thêm vào sau đó sẽ xảy ra tự động.
Nói tóm lại, giả định này là có thể, bất cứ ai có thể giới thiệu một cách tạo này thấp hơn gắn thẻ khu vực kiểm soát trong các adorner và định vị nó tương đối so với đáy của adorner (mà có thể có thể phải thay đổi kích thước như RichTextBox đổi kích thước nội dung)?
xem thêm http://social.msdn.microsoft.com/Forums/en-US/ wpf/thread/81eca7d5-88d7-477a-8cdb-cfb9e8b75379/ –
Không rõ ràng. – Basic