Begrip van opdrachten en besturingselementen
De scheiding van logica van de presentatie is de ontwerplogica die het opdrachtpresentatiesysteem van het Windows-lintframework inspireert: een systeem dat is gebaseerd op een ontwerppatroon waarbij functionaliteit en gedrag onafhankelijk van de besturingselementen die deze functionaliteit beschikbaar maken, worden geïmplementeerd.
In dit artikel wordt het ontwerp van het commandsysteem van het Ribbon-framework besproken. Hierin worden de concepten van opdrachten en besturingselementen beschreven en wordt verkend hoe ze samenwerken om een uitgebreide opdrachtervaring te bieden met een groot aantal nieuwe UI-mogelijkheden.
In het lintframework zijn opdrachten en besturingselementen onafhankelijke entiteiten. Een opdracht is een abstracte structuur, zonder presentatiebeperkingen, die een specifieke taak of klasse van functionaliteit vertegenwoordigt. Een besturingselement is daarentegen een concreet object dat de opdrachtfunctionaliteit beschikbaar maakt via de gebruikersinterface van het lint.
Dit onderscheid biedt de mogelijkheid om opdrachten te definiëren die vrij zijn van ui-details en die kunnen worden uitgevoerd op de intentie van een actie zonder dat u hoeft te beheren hoe de actie is aangeroepen.
Besturingselementen zijn de UI-objecten die vereist zijn voor de opdrachtpresentatie. Ze worden tijdens runtime weergegeven en beheerd door het framework op basis van gebruikersinteractie en een set inherente eigenschappen en gedragingen.
De door het framework beheerde flexibiliteit van de gebruikersinterface wordt ook wel adaptieve indeling genoemd en is een van de grote sterke punten van het lint. Lintbesturingselementen kunnen zichzelf automatisch opnieuw configureren via frameworkafhankelijke of door ontwikkelaars gedefinieerde indelingssjablonen die kunnen reageren op verschillende uitvoeringstijdvereisten, allemaal zonder één regel presentatiecode te schrijven. Zie Een lint aanpassen via groottedefinities en schaalbeleidsregelsvoor meer informatie.
Naast de voordelen van adaptieve indeling bieden een aantal complexe lintbesturingselementen zelfstandige oplossingen voor specifieke probleemruimten in de gebruikersinterface. Door een geavanceerd interactiemodel aan te bieden, bieden lintbesturingselementen, zoals FontControl of ColorPicker, de mogelijkheid om gegevens in abstractere termen te bewerken via eigenschappentassen van werkelijke lettertype- of kleurkenmerken in plaats van via verschillende subbesturingselementen, opsommingen en indexwaarden van standaardBesturingselementen voor Windows.
Losjes gekoppeld aan de besturingselementen op het lint die hun functionaliteit beschikbaar maken, zijn opdracht-implementaties het domein van de hosttoepassing en vormen de vorm van gebeurtenislisteners, opdrachthandlers en verschillende opdrachteigenschappen.
Opdrachten worden gedeclareerd in Ribbon-markup met een unieke ID of krijgen tijdens de compilatie een door de compiler gegenereerde ID toegewezen. Opdrachten zijn gekoppeld aan besturingselementen via een opdrachtnaam, maar, in tegenstelling tot besturingselementen, wordt de werkelijke functionaliteit gedefinieerd in code waarbij ze zijn gebonden aan specifieke opdrachthandlers via de opdracht-id.
Notitie
Bij compilatie wordt deze ID opgeslagen in een ID-definitieheaderbestand dat opdrachten beschikbaar maakt voor de bijbehorende opdrachthandlers in de Ribbon-hosttoepassing.
Elke opdracht heeft een onderliggend opdrachttype dat is opgegeven in de opsomming UI_COMMANDTYPE.
De mogelijkheden van dit opdrachtmodel worden gedemonstreerd door de werkbalk Snelle toegang op het lint (QAT). De QAT-functie biedt eindgebruikers een manier om eenvoudig hun eigen snelkoppelingen te definiëren voor vrijwel elk controle-element in de lint-interface. Tijdens uitvoeringstijd wordt een snelkoppeling dynamisch toegevoegd aan de QAT wanneer de gebruiker met de rechtermuisknop op een Ribbon klikt en Toevoegen aan werkbalk Snelle toegang selecteert in het contextmenu.
In de volgende afbeelding ziet u de Plakken en Plakken uit Opdrachten, vertegenwoordigd door een SplitButton besturingselement, in het lint van Windows 7 Paint.
In de volgende afbeelding ziet u dezelfde Plakken en Plakken uit Opdrachten, nog steeds vertegenwoordigd door een SplitButton-besturingselement, in de Ribbon QAT van Windows 7 Paint.
Wanneer een besturingselement wordt gehost door de QAT, behoudt het nieuwe exemplaar van het besturingselement alle functionaliteit van het oorspronkelijke besturingselement zonder dat er extra gebeurtenislisteners en opdrachthandlers nodig zijn om dit te ondersteunen. Beide besturingselementen zijn gebonden aan dezelfde opdrachthandler op het lint via een gedeelde opdracht-id. Op deze manier behandelt het framework beide besturingselementen als één, ongeacht welke wordt aangeroepen.
Notitie
Dezelfde voordelen worden gerealiseerd wanneer opdrachten worden opgenomen in een ContextPopup- tijdens het ontwerp. In dit geval kunnen de plakopdracht-handlers worden gebruikt, ongeacht of het besturingselement SplitButton wordt weergegeven op het lint, de QAT of de ContextPopup.