Contrôle de contenu
Vous avez probablement vu ce qui se passe si vous placez un contrôle de bouton dans la zone de contenu d'une fenêtre Avalonia UI.
Le concept des zones d'un contrôle Avalonia UI est discuté ici.
Par exemple :
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="MySample.MainWindow"
Title="MySample">
<Button HorizontalAlignment="Center" >Hello World!</Button>
</Window>
La fenêtre affiche le bouton - dans ce cas centré à la fois horizontalement (spécifié) et verticalement (par défaut). Cela ressemble à ceci :
Et si vous placez une chaîne dans la zone de contenu de la fenêtre, par exemple :
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="MySample.MainWindow"
Title="MySample">
Hello World!
</Window>
La fenêtre affichera la chaîne :
Mais que se passe-t-il si vous essayez d'afficher un objet d'une classe que vous avez définie dans la fenêtre ?
Par exemple, en utilisant la définition de classe Student
namespace MySample
{
public class Student
{
public string FirstName { get; set;} = String.Empty;
public string LastName { get; set;} = String.Empty;
}
}
Et l'espace de noms XML local défini comme l'espace de noms MySample (ci-dessus), vous pouvez définir un objet étudiant dans la zone de contenu de la fenêtre ; comme suit :
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MySample"
x:Class="MySample.Views.MainWindow">
<local:Student FirstName="Jane" LastName="Deer"/>
</Window>
Mais vous ne verrez que le nom de classe entièrement qualifié pour l'objet étudiant :
Ce n'est pas très utile ! Cela se produit parce que Avalonia UI n'a pas de définition de la façon d'afficher un objet de la classe Student - et ce n'est pas un contrôle - donc il revient à la méthode .ToString(), et tout ce que vous voyez est le nom de classe entièrement qualifié.
À la page suivante, vous verrez l'une des manières dont vous pouvez spécifier comment afficher un objet créé à partir d'une classe que vous avez définie (pas un contrôle ou une simple chaîne).