Data Standard ダイアログのカスケード コンボ ボックスの作成例

Data Standard ダイアログに複数のコンボ ボックス(選択リスト)を作成します。この場合、最初のコンボ ボックスの選択内容に応じて、次のコンボ ボックスの内容が決まります。

最初のボックスで値が選択された時点で、次のボックスには最初の選択内容に基づいて値を表示する必要があります。たとえば、2 つのコンボ ボックスがあります。一つは車の会社名(BMW、Mercedes、Ferrari など)を示し、もう一つは選択した会社の車のタイプ(BMW の場合は 1、2、5、X2、X5 など、Mercedes の場合は A、B、C、CL、CLS など)を示します。

コンボ ボックスを作成

コンボ ボックスを作成するには 4 つの部分があります。

  1. 手順 1: データ ソースを作成する

    データは、コンボ ボックスに含まれるソースが必要になります。ネイティブの XML エンジンには WPF が付属しているため、データを格納する XML ファイルを作成することができます。XML ファイルには、最初に選択する第 1 レベルのコンテンツが記述します。すべてのエントリには、2 番目に選択する子エントリを記述します。第 3 レベル以上のネストされた選択リストが必要な場合は、2 番目のエントリに複数の子を記述することができます。

    記述内容の例を次に示します。

    data.xml ファイルを作成し、このコンテンツをファイルにコピーして、ファイルを目的の場所に保存します。(この例では、Data.xml ファイルを C:\Temp に保存します。)

  2. Data Standard の .xaml ファイルをリソースとしては、data.xml を追加します。これにより、コンボ ボックスでデータを使用できるようになります。

    、 .xaml ファイル内のリソースセクションに以下の行を追加します。

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

    リソース セクション全体の例を次に示します。

    <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>

    新しいリソースには comboDataSource という名前が付けられ、パスは data.xml を指します。

  3. ここでは、コンボ ボックスを作成し、XML 内の第 1 レベルのデータ、および対応する第 2 レベルを参照するように記述します。

    次に、最初のコンボ ボックスの例を示します。

    <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"/>

    最初のコンボ ボックスの Source は、前に定義した StaticResource-comboDataSource に設定されています。

    2 番目のコンボ ボックスは次のようになります。

    <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"/>

    この例では、ほとんどの属性は、最初のコンボ ボックスと同じ役割を果たします。本質的な相違点は、ItemSourceです。この例では、ItemSource は、ComboCarCompanies と呼ばれる最初のコンボの SelectedItem から取得されます。

  4. プロパティ定義 CarType および Car を定義します。この例で使用しているツールに応じて、Inventor.cfg または AutoCAD.cfg で、CarTypeCar のプロパティ定義を追加します。設定ファイルでのプロパティ定義の追加については、こちらを参照してください。

    注: VDS 2019 以降では、存在しないプロパティ定義を VDS が内部的に作成するため、この手順を省略できます。
  5. 変更内容を保存し、ダイアログを確認します。