È possibile creare più caselle combinate (note anche come elenchi di selezione) per le finestre di dialogo di Data Standard, in cui la casella combinata successiva dipende dalla selezione effettuata nella prima casella combinata.
Quando nella prima casella viene selezionato un valore, nella casella successiva vengono visualizzati i valori in base alla prima selezione. Ad esempio, sono presenti due caselle combinate: in una sono visualizzati i nomi delle case automobilistiche (BMW, Mercedes, Ferrari e così via) mentre nella seconda sono visualizzati i tipi di auto della casa selezionata (per BMW: 1, 2, 5, X2, X5...; per Mercedes: A, B, C, CL, CLS...).
Sono disponibili quattro parti per la creazione di una casella combinata.
Passaggio 1: creazione di un'origine dati
È necessario disporre di un'origine dati da cui i dati devono provenire da comporre la casella combinata. Poiché WPF è dotato di un motore XML nativo, è possibile creare un file XML contenente i dati. Il file XML ha il contenuto di primo livello per la prima selezione. Ogni voce contiene voci derivate per la seconda selezione. Queste seconde voci potrebbero disporre anche di più derivati in caso sia necessario un elenco di selezione di tre livelli o maggiormente nidificato.
Esempio dell'aspetto:
Creare un file data.xml, copiare il contenuto nel file e salvarlo nella posizione desiderata. In questo esempio, salvare il file Data.xml in C:\Temp.
Aggiungere il file data.xml come risorsa per il file .xaml di Data Standard. Questa operazione consente alle caselle combinate di utilizzare i dati.
Aggiungere le seguenti righe alla sezione risorse nel file .xaml:
<XmlDataProvider x:Key="comboDataSource" Source="C:\Temp\data.xml"/>
Esempio del possibile aspetto dell'intera sezione risorse:
<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 nuova risorsa è stata denominata comboDataSource
e il nome percorso file data.xml.
Creare le caselle combinate con riferimento ai dati di primo livello nel file XML e del secondo livello corrispondente.
Di seguito è riportato un esempio della prima casella combinata:
<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"/>
L'Source
della prima casella combinata è impostata sulla StaticResource-comboDataSource
definita in precedenza.
La seconda casella combinata ha un aspetto simile al seguente:
<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 maggior parte degli attributi nell'esempio hanno lo stesso ruolo come nella prima casella combinata. La reale differenza è nell'ItemSource
. In questo esempio, ItemSource
proviene da SelectedItem
della prima casella combinata denominata ComboCarCompanies
.
Specificare le definizioni di proprietà CarType
e Car
: in Inventor.cfg o AutoCAD.cfg, a seconda dello strumento che viene utilizzato per questo esempio, aggiungere le definizioni di proprietà per CarType
e Car
. Fare riferimento qui per l'aggiunta delle definizioni di proprietà nel file di configurazione.
Salvare le modifiche e controllare la finestra di dialogo.