Existe-t-il des contrôles de fonctionnement pour WPF?Piemenu for WPF
Répondre
Cette question est probablement longue morte, mais juste une note que le contrôle Thomas M posté, tout génial, a un problème majeur: Vous devez passer la souris et cliquez sur l'élément réel au lieu de la tranche de tarte. Cela signifie que les tranches de tarte ne sont pas complètement adjacentes et que l'IMO supprime une grande partie de la cliquabilité (loi de Frits) des avantages du contrôle. Donc, alors qu'il ressemble comme un menu de tarte, il positionne vraiment tout radialement.
Je fini par faire ceci:
private static Path makeDeliciousKeyLimePieSlice(double innerRadius, double outerRadius,
double startAngle, double endAngle, Vector ofs)
{
Point p1 = new Point(Math.Cos(endAngle) * innerRadius, Math.Sin(endAngle) * innerRadius) + ofs;
Point p2 = new Point(Math.Cos(startAngle) * innerRadius, Math.Sin(startAngle) * innerRadius) + ofs;
Point p3 = new Point(Math.Cos(startAngle) * outerRadius, Math.Sin(startAngle) * outerRadius) + ofs;
Point p4 = new Point(Math.Cos(endAngle) * outerRadius, Math.Sin(endAngle) * outerRadius) + ofs;
PathFigure fig = new PathFigure(p1, new PathSegment[] {
new ArcSegment(p2, new Size(innerRadius, innerRadius), endAngle - startAngle, false, SweepDirection.Counterclockwise, true),
new LineSegment(p3, true),
new ArcSegment(p4, new Size(outerRadius, outerRadius), startAngle - endAngle, false, SweepDirection.Clockwise, true),
}, true).GetAsFrozen();
return new Path { Data = new PathGeometry(new[] { fig }).GetAsFrozen() };
}
Cela va créer une « tranche » de la tarte. Vous pouvez le style comme vous voulez si vous voulez un vrai menu de tarte. Une autre option consiste à le rendre transparent (définir le remplissage à Brushes.Transparent
, doit avoir un remplissage à être hit-test visible), ce qui semble bon pour les menus contextuels radiaux. Voici mon WIP après le travail d'environ une demi-heure (je sais l'espacement suce):
EDIT: ah; le curseur n'apparaît pas dans la photo - en fait, si vous utilisez la superposition de chemins, vous pouvez placer la souris en dehors du contrôle réel tout en la mettant en surbrillance.
Belle solution! J'ai dû enlever .GetAsFrozen() parce que les données de chemin ont besoin de l'objet de géométrie et de Freezable sont héritées par la géométrie, pas l'inverse. (en utilisant .NET 4.5) –
Ce contrôle nécessite un peu de travail, mais c'est un excellent point de départ et prend en charge plusieurs niveaux d'éléments. (ie: une hiérarchie) Check it out here
- 1. WPF For Beginners Clarification
- 2. SetBinding for Listbox dans WPF
- 3. téléchargez Ribbon Control for WPF?
- 4. WPF Wait for User Input
- 5. Différence entre "COMPRESS FOR ALL OPERATIONS" et "COMPRESS FOR OLTP"?
- 6. New PythonInterface for OpenCV
- 7. IntentNotFoundException for TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA
- 8. Plist for windows
- 9. WinDbg .for loop
- 10. VB2010 - boucle For Edition
- 11. Style for Textbox Silverlight
- 12. For-loops en Python
- 13. FOR XML EXPLICIT
- 14. Design for etc
- 15. OpenId for gmail
- 16. PHP Class for logins
- 17. Tidy for SQL
- 18. TemplateBinding for Dynamic Controls
- 19. Packager for iPhone XML
- 20. Linq like for Java
- 21. JavaScript Question for IE6
- 22. imagemagick for thumbnail
- 23. ActiveRecord for Erlang
- 24. Checkstyle for ActionScript (Flex)
- 25. MySQL UNION for UPDATE
- 26. Git for Web Development
- 27. RepeatButton for Winforms
- 28. cache_money for Rails 3
- 29. StyleCop for ReSharper
- 30. timeout for fread
Pouvez-vous être un peu plus clair? Voulez-vous dire un contrôle de camembert? – ChrisF
Je pense qu'il veut dire menu de tarte, comme dans http://en.wikipedia.org/wiki/Pie_menu – Grokys