Je ne suis pas tout à fait sûr de comment vous envisagez que la barre de progression combine différents progrès, mais si l'on suppose que le progrès le plus avancé est en bas de l'indice Z et que le progrès le moins avancé est en haut, alors je ferais quelque chose dans ce sens :
1) Je créerais probablement un contrôle utilisateur pour cette nouvelle barre de progression.
2) Il aurait une propriété appelée NumberOfProgresses, liée à un tableau contenant l'état des progrès.
3) Chaque progrès serait représenté par un élément de type Border (ou peut-être quelque chose de plus adapté dans l'arbre visuel), car il s'agit d'un contrôle wpf simple avec une propriété de fond. La propriété de fond serait définie sur un style de progression agréable et la couleur de la progression pourrait être liée dans le style à la propriété BorderBrush du bord. Cela faciliterait la définition de la couleur de la progression.
4) Le contrôle utilisateur aurait une méthode UpdateProgress qui prendrait en paramètres la valeur en pourcentage et l'index du progrès dans le tableau.
5) Au fur et à mesure que les progrès sont mis à jour, vous pouvez soit simplement calculer la largeur appropriée (largeur réelle du contrôle utilisateur * pourcentage) pour le bord et jouer avec l'indice Z pour l'afficher en haut/en bas, ou empiler les bords horizontalement, définir le progrès le moins avancé en premier, puis pour le reste des progrès, vous devriez soustraire les longueurs des progrès précédents pour obtenir le même effet.
Ainsi, il n'y aurait aucun artefact de transparence induit et pas de OnRender()... Notez bien, en WPF, il ne devrait y avoir aucune raison de manipuler OnRender ceci et OnRender cela, comme cela était nécessaire dans WinForms avec OnPaint. Il suffit de configurer les éléments via du code pour obtenir l'apparence souhaitée et laisser WPF faire son rendu ;)
Je peux imaginer un problème avec ce contrôle utilisateur cependant. Vous devriez fournir des retours à l'utilisateur sur quelle couleur correspond à quel progrès. Mais cela vous ramènerait probablement à la case départ, ce qui signifie qu'il est préférable/plus simple d'afficher simplement plusieurs barres de progression.