Je développe un DocumentPaginator
personnalisé qui permet à un appelant de spécifier son propre contenu d'en-tête, ce qu'il fait en fournissant un UIElement - qui pourrait être un logo d'entreprise (Image), un texte d'en-tête (TextBlock) ou autre.Comment ajouter un UIElement à un ContainerVisual?
Je crée l'en-tête comme celui-ci, où CustomHeaderContent
est le contenu d'en-tête fournie par l'appelant: -
var header = new ContainerVisual();
header.Transform = new TranslateTransform(_margin.Width, _margin.Height);
// Add the caller's content (CustomHeaderContent is of type UIElement)
header.Children.Add(CustomHeaderContent);
(Ce header
ContainerVisual se éventuellement ajouté à un autre ContainerVisual représentant la totalité de la page imprimée).
Pour l'instant, mon appelant crée juste programme un Border
et attribue cela à la propriété CustomHeaderContent
: -
_docPaginator.CustomHeaderContent = new Border { Background = ... };
Cependant quand je lance l'application échoue sur la ligne header.Children.Add(...);
à l'exception: -
Visualisation spécifiée est déjà un enfant d'un autre Visual ou la racine d'un CompositionTarget.
Comment puis-je ajouter un UIElement à un ContainerVisual - si c'est possible? Sinon, quelles sont mes alternatives?
S'il vous plaît montrer aussi le code où CustomHeaderContent est créé. – Clemens
@Clemens ce n'est rien de spécial, mais j'ai mis à jour la question. –
CustomHeaderContent est-il utilisé ailleurs, par ex. en XAML? Il semble déjà faire partie d'un arbre visuel. – Clemens