2010-08-12 10 views

Odpowiedz

1

Firma Microsoft nie ujawniła metod wymaganych do renderowania niestandardowej TextElement w jednej z ich klas dokumentów. Jeśli spojrzysz na kod dla Run lub Span, nie ma rzeczywistego kodu renderującego. Renderowanie odbywa się w UIElement zbudowanym przez różne klasy wewnętrzne (takie jak FixedTextBuilder).

Z notatek MSDN w sprawie FrameworkContentElement:

FrameworkContentElement nie ma jeszcze zdefiniować własne zachowanie renderowania; Tworzenie instancji klasy FrameworkContentElement w kodzie lub znacznikach jest możliwe, ale nic nie wyświetla w interfejsie użytkownika aplikacji (interfejsie) aplikacji WPF. Logika renderowania musi być zapewniona przez klasy, które pobierają elementy podrzędne FrameworkContentElement w ramach ich modelu zawartości lub w klasach pochodnych FrameworkContentElement.

Nie wszystko jest stracone, wsparcie dla renderowania niestandardowego bloku i elementy Inline jest poprzez zajęcia BlockUIContainer i InlineUIContainer. Następnie można utworzyć UIElement o niskim poziomie, który będzie hostowany wewnątrz dokumentu stałego lub przepływu, lub użyć elementów WPF wyższego poziomu.

+0

Próbuję zastosować wzorzec MVVM dla dokumentu przepływu. Mogłem wykonać TextBox z DataBinding ale mam problemy z BlockUIContainer ... – DrMarbuse

1

Jakiego rodzaju rozciągliwość jest wymagana? Zwykle, jeśli chodzi o zmianę domyślnego zachowania dowolnej kontrolki WPF, której nie można zmienić przez dziedziczenie, używamy Attached Properties.

Here is an example z elementu Span, który jest powiązany z kolekcją przedmiotów. Ta sama sztuczka z dołączonymi właściwościami pomaga w wiązaniu się z tekstem.

Odpowiedź będzie również zależała od kontekstu użytkowania FlowDocument. Jeśli jest w trybie tylko do odczytu, klasy BlockUIContainer i InlineUIContainer są Twoimi przyjaciółmi. Ale jeśli FlowDocument jest wewnątrz RichTextBox, będziesz ich nienawidzić i przeklinać (problemy z kopiowaniem/wklejaniem, cofaniem/powtarzaniem itp.) Wraz z całą infrastrukturą obsługi tekstu WPF.

Powiązane problemy