2012-07-26 10 views
5

Tengo dos cuadros combinados en WPF uno de los cuadros combinados se ve así:cuadro combinado de la unión a otro cuadro combinado en WPF

  <ComboBox Height="23" HorizontalAlignment="Left" Margin="244,10,0,0" Name="comboBox2" VerticalAlignment="Top" Width="120"> 
       <ComboBoxItem Content="Peugeut" /> 
       <ComboBoxItem Content="Ford" /> 
       <ComboBoxItem Content="BMW" /> 
      </ComboBox> 

Me preguntaba cómo se enlaza el segundo ComboBox2 a la lista de coches specifc hace a la seleccionada elemento en combobox1.

Si se selecciona Peurgeut continuación, en cuadro combinado de dos debería haber una lista:

106 
206 
306 

o si se selecciona BMW continuación

4 series 
5 series 

Y así sucesivamente

+0

Puede consultar [Cómo: Usar el patrón de detalles maestros con datos jerárquicos] (http://msdn.microsoft.com/en-us/library/ms742531.aspx). – Gqqnbig

Respuesta

6
<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="50"/> 
     <RowDefinition Height="50"/> 
    </Grid.RowDefinitions> 

    <ComboBox Height="23" ItemsSource="{Binding Cars}" DisplayMemberPath="Name" HorizontalAlignment="Left" Margin="244,10,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120"/> 
    <ComboBox Height="23" Grid.Row="1" ItemsSource="{Binding SelectedItem.Series, ElementName=comboBox1}" HorizontalAlignment="Left" Margin="244,10,0,0" Name="comboBox2" VerticalAlignment="Top" Width="120"/> 

</Grid> 

    public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     Cars = new ObservableCollection<Car>(); 
     Cars.Add(new Car() { Name = "Peugeut", Series = new ObservableCollection<string>() { "106", "206", "306" } }); 
     Cars.Add(new Car() { Name = "Ford", Series = new ObservableCollection<string>() { "406", "506", "606" } }); 
     Cars.Add(new Car() { Name = "BMW", Series = new ObservableCollection<string>() { "706", "806", "906" } }); 
     DataContext = this; 

    } 

    public ObservableCollection<Car> Cars { get; set; } 

} 
public class Car 
{ 
    public string Name { get; set; } 
    public ObservableCollection<string> Series { get; set; } 
} 

espero que esto ayudará.

+0

Gracias funciona perfecto +1 a todos. –

+0

me puede mostrar su código funcionó bien conmigo. – ethicallogics

+0

¡Esto es tan útil! – HoKy22

0

intenta agregar los artículos en el cuadro 2 programáticamente cuando el usuario selecciona el elemento ComboBox1.

 if (combobox1.SelectedText == "Peurgeut") 
     { 
      box2.Items.Add("106"); 
      box2.Items.Add("206"); 
      box2.Items.Add("306"); 
     } 
+0

SelectedText no está en wpf, y el valor o elemento seleccionado proporciona una comparación de referencia involuntaria. –

1

A menos que busque los datos, no creo que pueda hacerlo solo con XAML. Si, sin embargo, que ha creado una clase de obligar a sus cuadros combinados que podría tener una clase con algo como:

public class CarMake 
{ 
    public string Make {get; set;} 
    public List<string> Models {get; set;} 
} 

Luego, en el primer cuadro combinado, simplemente se unen a una instancia de la lista con la información poblada, a continuación, se unen el segundo cuadro combinado como:

<ComboBox ItemsSource="{Binding ElementName=FirstComboBox, Path=SelectedItem.Models}" ></ComboBox> 

Eso debe conseguir que ir ...

Cuestiones relacionadas