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, há duas caixas combo: uma delas mostra nomes de montadoras de veículos (BMW Mercedes, Ferrari, etc.) e a outra mostra os tipos de carro da empresa selecionada (BMW: 1, 2, 5, X2, X5...; Mercedes: A, B, C, CL, CLS...).
Criar uma caixa combo
A criação de caixas de combinação consiste em quatro etapas.
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 arquivo no local desejado. Neste exemplo, salve o arquivo Data.xml em C:\Temp.
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 de comboDataSource e o caminho aponta para o data.xml.
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"/>
A origem da primeira caixa de combinação é definida como a origem StaticResource-comboDataSource definida 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 maior diferença está em ItemSource. Neste exemplo, ItemSource é proveniente de SelectedItem da primeira combinação 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.