Próbuję osiągnąć niezwykłe wykorzystanie Adornera. Po najechaniu kursorem myszy na RichTextBox, nad nim pojawi się Adorner (patrz diagram poniżej), umożliwiający dodanie listy ciągów do ListBoxu zawartego w Adornerze. Służy do dodawania "tagów" (à la Flickr) do fragmentu zawartego w ozdobnym elemencie.Adorator WPF z kontrolkami wewnątrz
pierwsze: czy to w ogóle możliwe?
Większość przykładów Adornerów pokazuje, jak zastąpić metodę OnRender Adornera, aby robić trywialne rzeczy, takie jak kształty rysunków. Byłem w stanie użyć tego do renderowania zestawu prostokątów, które tworzą szare obramowanie Adornera, które również zmienia się automatycznie, gdy wysokość RichTextBox wzrasta z powodu dodania dodatkowego tekstu linii podczas wyświetlania Adornera.
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
}
Jednak dodanie kontroli jest nieco bardziej problematyczne. Ogólnie mówiąc, adorner WPF wymaga dodania kontroli podrzędnych w kodzie zamiast XAML. Korzystając z techniki opisanej w artykule DrawingContext adorner - possible to draw stackpanel?, nauczyłem się dodawać do Adornera formanty podrzędne (takie jak TextBox) bez żadnego problemu w inicjatorze Adornera.
Problem polega jednak na umieszczeniu tych elementów sterujących w Adornerze.
Gdybym mógł stworzyć siatkę z szarym tłem i ustawić ją na dole Adornera, powinienem być gotowy. Zakładam (mam nadzieję), że takie rzeczy jak automatyczna zmiana rozmiaru Adornera w oparciu o zmieniający się rozmiar tej siatki, gdy dodamy tagi, nastąpi automatycznie.
W skrócie, zakładając, że jest możliwe można każdy zalecane sposób tworzenia tego dolnego sterowania znakowania ciągu Adorner i ustawiania go względem dolnej części Adorner (która może mieć na rozmiar jak RichTextBox zawartość zmienia rozmiar)?
zobaczyć również http://social.msdn.microsoft.com/Forums/en-US/ wpf/thread/81eca7d5-88d7-477a-8cdb-cfb9e8b75379/ –
Nieoczywisty. – Basic