48 votes

Division de l'interface WPF en plusieurs fichiers Xaml

J'essaie de créer une interface utilisateur à l'aide de XAML. Cependant, le fichier devient rapidement très volumineux et il est difficile de travailler avec. Quelle est la meilleure façon de le diviser en plusieurs fichiers ?

J'aimerais pouvoir définir le contenu d'un élément tel qu'une ComboBox à un élément défini dans un fichier xaml différent (mais dans le même projet VS).

merci

44voto

stusmith Points 8588

Vous pouvez diviser une grande interface utilisateur en définissant des UserControls.

Cliquez avec le bouton droit de la souris sur l'arbre des solutions, choisissez Add->New Item... puis User Control. Vous pouvez le concevoir de la manière habituelle.

Vous pouvez ensuite faire référence à votre usercontrol dans XAML à l'aide d'une déclaration d'espace de nom. Disons que vous voulez inclure votre UserControl dans une fenêtre. Dans l'exemple suivant, j'ai ajouté un UserControl nommé "Foo" à l'espace de nom "YourCompany.Controls" :

<Window x:Class="YourCompany.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:Controls="clr-namespace:YourCompany.Controls">

  <Controls:Foo ... />

Pour votre exemple spécifique, vous utiliseriez votre usercontrol dans une combobox en définissant un DataTemplate qui affiche les données dans votre usercontrol.

24voto

EFrank Points 984

Vous pouvez diviser les fichiers XAML en utilisant une balise Dictionnaire des ressources . Le ResourceDictionary peut être utilisé pour fusionner d'autres fichiers :

<Page.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="myresourcedictionary.xaml"/>
      <ResourceDictionary Source="myresourcedictionary2.xaml"/>
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Page.Resources>

Dans le ResourceDictionary, vous pouvez également déclarer des styles que vous pouvez utiliser pour vos éléments, de sorte que le fichier XAML principal soit plus petit.

Une autre possibilité pour obtenir un fichier XAML plus petit est de définir vos propres contrôles que vous utiliserez ensuite dans votre application principale.

-1voto

Andrey Neverov Points 870

Utilisez les styles et les contrôles de l'utilisateur. Divisez votre interface en petites parties et codez-les dans d'autres fichiers xaml. Exemple :

<Window> <VeryBigControl> <VeryBigControl.Style> ... <!--very long style--> </VeryBigControl.Style> .. <!--content of very big control--> </VeryBigControl </Window>

le diviser en trois fichiers xaml :
Window.xaml - ce sera Window
VeryBigControl.xaml - ce sera le contrôle de l'utilisateur.
VeryBigControlStyle.xaml - ce sera le dictionnaire de ressources
et ainsi de suite :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X