Passer au contenu principal
Version : 11.0.0

Comment créer une bibliothèque de contrôles personnalisés

Ce guide vous montre comment créer une bibliothèque de contrôles personnalisés et la référencer pour une utilisation dans une application Avalonia UI.

Dans cet exemple, un fichier de contrôle personnalisé est ajouté à une bibliothèque de classes .NET. La bibliothèque a le package NuGet Avalonia UI installé :

<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cc="clr-namespace:CCLibrary;assembly=CCLibrary"
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="AvaloniaCCLib.MainWindow"
Title="AvaloniaCCLib">
<Window.Styles>
<Style Selector="cc|MyCustomControl">
<Setter Property="Background" Value="Yellow"/>
</Style>
</Window.Styles>

<cc:MyCustomControl Height="200" Width="300"/>

</Window>
POUR VOTRE INFORMATION

Notez que la référence de l'espace de noms pour la bibliothèque de contrôles inclut le nom de l'assemblage.

Définitions des espaces de noms XML

Lorsque vous ajoutez une référence à une bibliothèque de contrôles dans un fichier XAML Avalonia UI, vous pouvez vouloir utiliser le format d'identification par URL. Par exemple :

xmlns:cc="https://my.controls.url"

Ceci est possible grâce à la présence de définitions d'espaces de noms XML dans une bibliothèque de contrôles. Celles-ci mappent les URL aux espaces de noms de code et se trouvent dans le fichier Properties/AssemblyInfo.cs du projet. Par exemple :

[assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia")]
POUR VOTRE INFORMATION

Vous pouvez voir cela dans le code source des contrôles intégrés Avalonia UI ici.

Définitions d'espaces de noms courants

Vous pouvez également faire en sorte qu'une URL map plusieurs espaces de noms dans votre bibliothèque de contrôles. Pour ce faire, ajoutez simplement plusieurs définitions d'espaces de noms XML qui utilisent la même URL, mais qui mappent à différents espaces de noms de code, comme ceci :

using Avalonia.Metadata;

[assembly: XmlnsDefinition("https://my.controls.url", "My.NameSpace")]
[assembly: XmlnsDefinition("https://my.controls.url", "My.NameSpace.Other")]