Question

Je cuisine un bouton personnalisé. Cette La capture d'écran sera utile. Il n'y a aucun problème avec le bouton comme le montre l'image car le badge est suspendu à gauche. Mais si je veux que l'insigne accroche à droite, l'élément suivant dans la boîte de liste obscurcira les parties de l'insigne qui vont au-delà des limites de son conteneur (la largeur du bouton). Maintenant, je ne peux pas résoudre ce problème avec le zoorder, non? Parce que cela ne s'applique qu'à la commande dans son conteneur, dans ce cas, le ListBoxItem. Y a-t-il quelque chose qui peut être fait ici? Pour info, j'espère éviter une solution de travail, comme mettre des marges suffisamment grandes pour donner la salle des badges. je avoir un autre bouton personnalisé dont le texte est modifiable et l'expansion de la zone de texte utilisée pour prendre le texte entré dépensera bien au-delà du bouton sous-jacent.

Était-ce utile?

La solution

Vous devez ajouter un zindex au contenant ListBoxItem lui-même. Une approche qui pourrait fonctionner pour un petit ensemble d'articles, alors créez un nouveau ListBox taper.

public class ZOrderedListBox : ListBox
{
    private int _ZIndex = 0;

    protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
    {
        base.PrepareContainerForItemOverride(element, item);
        Canvas.SetZIndex((UIElement)element, _ZIndex--);
    }
}

La ZorderedListBox Ci-dessus, attribuera un zindex descendant afin que les éléments précédents aient un zindex plus élevé que ceux ultérieurs. Mise en garde Cette solution simpliste fonctionne uniquement avec StackPanel Comme le panneau des éléments, cela ne fonctionnera pas avec la valeur par défaut VirtualizingStackPanel, ce qui prendra une plus grande sophistication.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top