範例 - 建立「Data Standard」對話方塊的階層式組合方塊

為 Data Standard 對話方塊建立多個組合方塊 (也稱為選取清單),其中下一個組合方塊取決於第一個方塊的選取項。

在第一個方塊中選取值後,下一個方塊應根據第一個選取項展示值。例如,您有兩個組合方塊:一個展示汽車公司名稱 (BMW、Mercedes、Ferrari 等),另一個展示所選公司的車型 (對於 BMW:1、2、5、X2、X5...;對於 Mercedes:A、B、C、CL、CLS...)。

建立組合方塊

建立組合方塊需要四個部分。

  1. 建立資料來源

    您需要在資料來源中植入組合方塊。由於 WPF 隨附原生 XML 引擎,您可以建立一個 XML 檔案,並在其中包含資料。XML 檔案包含第一層內容以進行第一個選取。每個項目都有子項目以進行第二個選取。如果您需要三層或更多巢狀選取清單,這些第二個項目還可以擁有更多子系。

    以下是其外觀:

    建立 data.xml 檔案,複製此內容至檔案中,並將檔案儲存至所需位置。(在本例中,將 data.xml 檔案儲存到 C:\Temp)。

  2. 加入 data.xml 做為資源 Data Standard .xaml 檔案。這樣組合方塊便可使用該資料。

    將下列各行加入至的資源區段在 .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 中的第一層資料和對應的第二層。

    以下是第一個組合方塊的範例:

    <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

    第二個組合方塊如下所示:

    <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 來自第一個組合方塊 ComboCarCompaniesSelectedItem

  4. 定義性質定義 CarTypeCar:視您在本例中使用的工具而定,在 Inventor.cfg 或 AutoCAD.cfg 中,加入 CarTypeCar 的性質定義。請參閱此處瞭解如何在規劃檔中加入性質定義

    注意事項: 在 VDS 2019 和後續版本中不必執行此步驟,因為 VDS 內部會建立不存在的性質定義。
  5. 儲存變更並檢閱對話方塊。