un cuadro combinado depende de otro cuadro combinado en WPF

Tengo este cuadro combinado de dos vinculados a 2 tablas de bases de datos de diferentes redes. Primero está vinculado a la tabla con 1 columna con clase de animal (por ejemplo, Reptiles, Mamíferos, Anfibios, etc.) y la otra tiene dos columnas Nombres de animales y su respectiva clase de animal (ejemplo: lagarto - Reptiles, Serpiente - Reptiles, Perro - Mamífero, Rana - Anfibio ). Ahora lo que quiero es cuando selecciono el elemento en el cuadro combinado1, el cuadro combinado2 debe tener la lista respectiva de animales que coinciden con el elemento seleccionado en el cuadro combinado 1 con la clase de animal respectiva de cada animal.

Esto es lo que he hecho hasta ahora

<ComboBox Grid.Column="2" Grid.Row="4" Margin="3,1,3,1"
         Name="comboBox1"
         ItemsSource="{Binding Source={StaticResource NameListData}, Path=Animal}"
         Selectionchanged="comboBox1_Selectionchanged" />
    <ComboBox Grid.Column="2" Grid.Row="5" Margin="3,1,3,1"
         Name="comboBox2"
         ItemsSource="{Binding Source={StaticResource NameListData}, Path=Stream}" />

La función selection_changed

private static string aa;
 private void comboBox1_Selectionchanged(object sender, SelectionchangedEventArgs e)
 {
 aA = comboBox1.SelectedItem.ToString();
 }

 public static string aA
 {
 get { return aa; }
 set { aa = value; }
 }

Las colecciones a las que están vinculados 2 cuadros combinados y se encuentran en la clase MainViewModel

DataClasses1DataContext dc = new DataClasses1DataContext();
public List<string> Animal
{
get
{
List<string> facult = new List<string>();

foreach (var a in dc.Faculties)
{ 

facult.Add(a.Animal1.ToString());
}

return facult;
}
}


string selection;

public List<string> Stream
{

get
{
selection = Schooling.Pages.NewStudentGeneral.aA;
List<string> stream = new List<string>();

var q = from c in dc.Streams where c.faculty ==selection select c;
foreach (var b in q )
{
stream.Add(b.stream1);
}

return stream;
}
}

Aquí, la cadena de selección no obtiene el valor seleccionado en el combobox1 porque cada vez que codifico y especifico la parte de selección como en la declaración a continuación

1 var q = from c in dc.Streams where c.faculty =="Reptiles" select c; 

Dará los respectivos animales para los Reptiles.

Supongo que si la variable de selección obtiene el valor seleccionado de combobox1, mi problema se ha resuelto. ¿O estoy haciendo todo mal aquí? por favor ayuda.

preguntado el 08 de enero de 11 a las 17:01

1 Respuestas

Necesita decirle de alguna manera a su segundo ComboBox que necesita actualizar sus elementos, puede hacerlo a través de implementaciones de INotifyPropertyChanged/INotifyCollectionChanged o hacerlo manualmente. Dado que tiene un evento explícito para el cambio de selección en el primer ComboBox, también puede actualizar el segundo manualmente, esto probablemente podría hacerse cambiando el controlador de la siguiente manera:

 private void comboBox1_Selectionchanged(object sender, SelectionchangedEventArgs e)
 {
      aA = comboBox1.SelectedItem.ToString();
      comboBox2.GetBindingExpression(ComboBox.ItemsSourceProperty).UpdateTarget();
 }

Respondido el 08 de enero de 11 a las 21:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.