Maak een controle bovenaan in WPF

Ik heb een formulier waarin de gebruiker verschillende formulierelementen kan selecteren en deze kan verslepen. Omdat de gebruiker de lay-out van het formulier kan aanpassen, gebruik ik een canvas en alle elementen zijn hiervan de onderliggende elementen.

Wanneer twee elementen zich in dezelfde regio bevinden, ongeacht welke laatste als laatste is toegevoegd, wordt er een kind van het canvas bovenop getekend. Ik wil in staat zijn om het actieve element, dat wordt gesleept, tot het bovenste element te maken.

Ik speelde rond met de SetZOrder-methode, stel deze in op 0, maar doet niets. Na inspectie van al mijn elementen die GetZOrder aanroepen krijg ik een 0 voor elk van hen, wat de reden is dat het instellen op 0 geen verschil maakt.

De enige oplossing die ik heb gevonden en die werkt, is het element verwijderen en toevoegen aan het canvas.

        _mainCanvas.Children.Remove(_selectedElement);
        _mainCanvas.Children.Add(_selectedElement);

Terwijl dit werkt, vind ik dat er een meer geprefereerde en juiste manier is om dit te doen.

0
heb je dit artikel bekeken door Josh Smith: codeproject.com/KB/WPF/DraggingElementsInCanvas. aspx
toegevoegd de auteur Muad'Dib, de bron

1 antwoord

De ZIndex bepaalt wel welke het beste is. De hoogste ZIndex wint. Probeer ZIndex in te stellen van degene die je het beste wilt zijn voor een hoger aantal dan de ZIndex van de anderen.

0
toegevoegd
Het is ZIndex ..
toegevoegd de auteur H.B., de bron
@ H.B.. woops! Dat is wat ik krijg om het vanuit het geheugen te doen. Vast.
toegevoegd de auteur Chris E, de bron
Mijn probleem is dat ZIndex standaard op 0 staat. Het beschermt niet tegen meer dan één besturingselement met dezelfde ZIndex. Ik zou alle bedieningselementen kunnen instellen op een ZIndex van 1, en als je vervolgens een besturingselement selecteert, stel je de ZIndex in op 0, maar dan moet ik ook weer instellen op 1 wanneer het niet geselecteerd is. Ik hoopte dat ik gewoon de ZIndex op 0 kon zetten en dat het alle andere ZIndex-waarden automatisch zou veranderen, dan hoef je je geen zorgen te maken over het volgen van de eerder geselecteerde elementen en het terugzetten van de ZIndex naar iets hogers. Op dat moment lijkt het gewoon eenvoudiger om het besturingselement te verwijderen en toe te voegen.
toegevoegd de auteur WPFNewbie, de bron