Il est possible de placer du code directement à l'intérieur
de XAML.
On ajoute un élément <code> parmi les définitions.
Cet espace de nom s'obtient avec le préfixe "def".
Par ailleurs, la balise spéciale CDATA permet l'insertion directe
de code.
<FlowPanel xmlns="http://schemas.microsoft.com/2003/xaml" xmlns:def="Definition"> <Text>Salut le monde!</Text> <Button>Cliquez moi!</Button> <def:Code> <![CDATA[ string Salut() { return "Salut le monde!"; } ]]> </def:Code> </FlowPanel>
Pour conserver la portabilité, qui disparait avec l'insertion
de code dans l'interface, XAML fournit un moyen, ce sont les classes
partielles.
En declarant un classe comme partielle, on peut la compléter
avec du code provenant d'autres fichiers sources, lesquels seront adaptés
aux différentes plateformes utilisant notre interface écrite
en XAML
partial class MonCode { public string Salut() { return "Salut le Monde!"; } }
En fait, chaque fichier XAML est créé d'emblée
avec une classe partielle (avec un outil comme Visual Studio ou autre
outil adapté).
Cette classe se trouve dans un autre fichier source. Il vous appartient
de développer cet autre source avec du code natif.
Comme vous les savez, les élément XAML sont transposés
en classes et attribut dans le code généré. Cela
vous offre une compatibilité avec le code natif: vous utilisez
les éléments comme les autres classes écrite en
tout langage avec .NET.
<TextBlock> Salut le Monde! </TextBlock>
pour modifier cet élément en C Sharp:
Text = "Hello";
En fait c'est un peu plus compliqué, mais cela sera détaillé dans le tutoriel.
Une interface graphique serait de peu d'utilité si l'utilisateur
ne peut interagir avec les éléments, et donc s'il n'y
a pas de fonctions associées aux éléments graphiques.
Pour ce faire, il faut une gestion des évènements. C'est
là l'intérêt d'intégrer du code dans la définition
de l'interface.
Partiquement, on le réalise en ajoutant un attribut prédéfini
à chaque élément.
Le nom de l'attribut est l'évènement, sa valeur est le
nom de la fonction qui doit être appelée en réponse
à l'évènement.
<Button MouseLeftButtonDown="OnClick"> Cliquer </Button>
On doit aussi définit la fonction OnClick() dans le code associé comme il est indiqué plus haut.
private void OnClick(object sender, ClickEventArgs e) { sender.Text = "Salut!"; }