web-dev-qa-db-fra.com

Répartir l'interface WPF sur plusieurs fichiers XAML

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

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

merci

46
Dave Turvey

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

Cliquez avec le bouton droit de la souris sur l'arborescence de la solution, choisissez Add-> Nouvel élément ... puis Contrôle de l'utilisateur. Vous pouvez concevoir cela de la manière normale.

Vous pouvez ensuite référencer votre UserControl dans XAML à l'aide d'une déclaration d'espace de noms. Disons que vous souhaitez inclure votre UserControl dans une fenêtre. Dans l'exemple suivant, j'ai ajouté un UserControl nommé "FOO" à l'espace de noms "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 un ComboBox en définissant un fichier de données affichée les données de votre UserControl.

40
stusmith

Vous pouvez diviser les fichiers XAML à l'aide d'un ressource . Les ressources peuvent être utilisées 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 dossier, vous pouvez également déclarer des styles que vous pouvez utiliser à vos éléments, de sorte que le fichier XAML principal devient plus petit.

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

23
EFrank