Exemple : création de zones déroulantes en cascade dans la boîte de dialogue Data Standard

Dans les boîtes de dialogue Data Standard, créez une série de zones déroulantes (également appelées listes de sélection), dont la deuxième dépend des choix sélectionnés dans la première.

Lorsque vous sélectionnez une valeur dans la première zone, la zone suivante affiche des valeurs basées sur la première sélection. Prenons l’exemple de deux zones déroulantes : la première comporte des noms de constructeurs automobiles (BMW, Mercedes, Ferrari, etc.) et l’autre affiche les types de voitures de la société sélectionnée (pour BMW : 1, 2, 5, X2, X5, etc. ; pour Mercedes : A, B, C, CL, CLS, etc.).

Création d’une zone de liste combinée

La création d’une zone de liste se fait en quatre étapes.

  1. Etape 1 : création d'une source de données

    Vous avez besoin d'une source de données pour remplir la zone de liste déroulante. WPF étant livré avec un moteur XML natif, vous pouvez créer un fichier XML pour contenir les données appropriées. Ce fichier XML propose le contenu de premier niveau associé à la première sélection. Chaque entrée possède des entrées enfant pour la seconde sélection. Ces entrées de second niveau peuvent également posséder d’autres entrées enfants si vous avez besoin de créer une liste de sélection à trois niveaux ou plus.

    Voici à quoi ressemble le fichier :

    Créez un fichier data.xml, copiez-y le contenu ci-dessus et enregistrez le fichier à l’emplacement de votre choix. (Dans cet exemple, le fichier data.xml est enregistré dans C:\Temp).

  2. Ajouter le fichier data.xml en tant que ressource pour le fichier .xaml de Data Standard. Cela permet aux zones déroulantes d’utiliser les données.

    Ajoutez les lignes suivantes à la section Ressources dans votre fichier .xaml :

    <XmlDataProvider x:Key="comboDataSource" Source="C:\Temp\data.xml"/>
    

    Voici à quoi peut ressembler la section Ressources :

    <WPF:DSWindow.Resources xmlns:prop="clr-namespace:dataStandard.UI.View;assembly=dataStandard.UI">
        ...
        <XmlDataProvider x:Key="comboDataSource" Source="C:\Temp\data.xml"/>
    </WPF:DSWindow.Resources>
    

    La nouvelle ressource est nommée comboDataSource et le chemin pointe vers le fichier data.xml.

  3. Créez maintenant les zones déroulantes et faites-les pointer vers les données de premier niveau dans le fichier XML et vers celles du deuxième niveau correspondant.

    Voici à quoi ressemble la première zone déroulante :

    <ComboBox x:Name="ComboCarCompanies" Grid.Column="1" Grid.Row="6"
        ItemsSource="{Binding Source={StaticResource comboDataSource}, XPath=Data/Companies/Car}" Text="{Binding Prop[CarType].Value}"
        DisplayMemberPath="@Type" SelectedValue="{Binding Prop[CarType].Value}" SelectedValuePath="@Type"/>
    

    La Source de la première zone déroulante est définie sur la ressource StaticResource-comboDataSource que vous venez de déterminer.

    La seconde zone déroulante doit ressembler à ceci :

    <ComboBox x:Name="ComboCarType" Grid.Column="1" Grid.Row="7"
        ItemsSource="{Binding SelectedItem, ElementName=ComboCarCompanies}" Text="{Binding Prop[CarType].Value}"
        DisplayMemberPath="@Type" SelectedValue="{Binding Prop[CarType].Value}" SelectedValuePath="@Type"/>
    

    La plupart des attributs de cet exemple jouent le même rôle que dans la première zone déroulante. La vraie différence concerne ItemSource. Dans cet exemple, ItemSource provient de l’attribut SelectedItem de la première zone déroulante intitulée ComboCarCompanies.

  4. Déterminez les définitions de propriétés CarType et Car : dans le fichier Inventor.cfg ou AutoCAD.cfg, selon l’outil que vous utilisez dans cet exemple, ajoutez les définitions de propriétés correspondant à CarType et Car. Reportez-vous à la présente rubrique pour savoir comment ajouter des définitions de propriétés dans le fichier de configuration.

    Remarque : dans VDS 2019 et les versions ultérieures, il est possible d’ignorer cette étape, car VDS crée en interne des définitions de propriétés lorsque celles-ci n’existent pas.
  5. Enregistrez vos modifications et vérifiez les informations de la boîte de dialogue.