none
ComboBox que activa a otro ComboBox en Wpf RRS feed

  • Pregunta

  • Hola a todos pasa que tengo un primer comboBox que desplaza tipos de pruebas(hematologia, parasitologia, etc.) y de ahi tengo otro comboxBox que tiene que activarse si selecciono por ejemplo hematologia en el primer ComboBox y mostrar solo los tipos de pruebas correspondientes por ejemplo a hematologia y no así todos lo tipos de pruebas.

    Busque algo similar en internet y en la pagina de msdn pero no encuentro mucha información. O al menos que se llama a este tipo de ComboBox, algo similar que encontré fue comboBox múltiple.

    Gracias a todos.


    Willian

    martes, 29 de mayo de 2012 23:38

Respuestas

  • Saludos William... la clave es el objeto con el que alimentas cada "Tipo", agréga los "Sub tipos" como una colección dentro de cada "Tipo". Te recomiendo utilizar algo como esto:

    public class Tipo
    {
      public int Id { get; set; }
      public string Nombre { get; set; }
      public List<SubTipo> SubTipos { get; set; }
    }
    
    public class SubTipo
    {
      public int Id { get; set; }
      public string Nombre { get; set; }
    }
    
    void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
      List<Tipo> Lista = new List<Tipo>();
      Lista.Add(new Tipo { Id = 1, Nombre = "Tipo Uno" });
      Lista[0].SubTipos = new List<SubTipo>();
      Lista[0].SubTipos.Add(new SubTipo { Id = 10, Nombre = "Sub tipo 1.1" });
    
      Lista.Add(new Tipo { Id = 2, Nombre = "Tipo Dos" });
      Lista[1].SubTipos = new List<SubTipo>();
      Lista[1].SubTipos.Add(new SubTipo { Id = 11, Nombre = "Sub tipo 1.2" });
    
      DataContext = Lista;
    }

    Y luego en XAML:

    <ComboBox ItemsSource="{Binding}"
              DisplayMemberPath="Nombre"
              Name="cbxTipo" />
    <ComboBox ItemsSource="{Binding ElementName=cbxTipo, Path=SelectedItem.SubTipos}"
              DisplayMemberPath="Nombre"
              Name="cbxSubTipo" />


    Blog: Silverideas

    • Marcado como respuesta Will_xcx miércoles, 11 de julio de 2012 1:10
    miércoles, 30 de mayo de 2012 14:56