Crie várias caixas de combinação (também conhecidas como listas de seleção) para as caixas de diálogo do Data Standard, onde uma caixa de combinação depende da seleção feita na caixa de combinação anterior.
Quando um valor é selecionado na primeira caixa, a caixa seguinte deve mostrar os valores com base na primeira seleção. Por exemplo, você tem duas caixas de combinação: uma mostra nomes de montadoras (BMW, Mercedes, Ferrari etc.) e a segunda mostra tipos de carros da montadora selecionada (para BMW: 1, 2, 5, X2, X5 etc.; para Mercedes: A, B, C, CL, CLS etc.).
A criação de caixas de combinação consiste em quatro etapas.
Passo 1: Criar uma origem de dados
Você precisa de uma origem para os dados para preencher a caixa combo. Como o WPF vem com um mecanismo XML nativo, é possível criar um arquivo XML contendo dados. O arquivo XML tem o conteúdo de primeiro nível para a primeira seleção. Cada entrada tem entradas filho para a segunda seleção. As entradas secundárias podem ter ainda mais filhos caso você precise uma lista de seleção de três níveis ou mais.
É assim que fica:
Crie um arquivo data.xml, copie este conteúdo no arquivo e salve-o no local desejado. Neste exemplo, salve o arquivo Data.xml em C:\Temp.
Adicionar o data.xml como um recurso para o arquivo .xaml do padrão de dados. Isso permitirá que as caixas de combinação usem os dados.
Adicione as seguintes linhas para a seção de recursos em seu arquivo .xaml:
<XmlDataProvider x:Key="comboDataSource" Source="C:\Temp\data.xml"/>
É assim que a seção de recursos completa fica:
<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>
O novo recurso é denominado comboDataSource
e o caminho aponta para o data.xml.
Agora, crie as caixas combo e faça com que apontem para os dados do primeiro nível no XML e para o segundo nível correspondente.
Aqui está um exemplo da primeira caixa combo:
<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"/>
O Source
da primeira caixa combo é definido como StaticResource-comboDataSource
, que definimos anteriormente.
A segunda caixa de combinação é assim:
<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"/>
A maioria dos atributos em nosso exemplo tem o mesmo papel no primeiro combo. A diferença real está em ItemSource
. Neste exemplo, ItemSource
vem de SelectedItem
da primeira caixa combo chamada ComboCarCompanies
.
Especifique as definições de propriedade de CarType
e Car
: em Inventor.cfg ou AutoCAD.cfg, dependendo da ferramenta usada neste exemplo, adicione as definições de propriedade de CarType
e Car
. Veja aqui como adicionar definições de propriedade ao arquivo de configuração.
Salve as alterações e revise a caixa de diálogo.