Seleccionar elementos de Combobox al seleccionar un grupo
Tengo un combobox en mi archivo .xaml:
<combobox name="Group" margin="50,71,330,618" grid.column="1"></combobox>
Y otro combobox en mi archivo .xaml:
<combobox name="Sort" margin="20,71,0,618"></combobox>
Cuando selecciono un elemento de mi combobox, como ‘Líquido’, solo quiero ver los elementos de la tabla Sort que tengan el nombre de grupo Líquido.
Mi FK/PK están correctos en la base de datos, pero no sé cómo ponerlos en mi proyecto WPF.
Estoy utilizando Visual Studio 2019, C# en WPF.
En mi archivo .cs tengo la siguiente consulta para que siempre muestre los elementos en el combobox:
public AddStock()
{
InitializeComponent();
bindcomboboxgroup();
}
private void bindcomboboxgroup()
{
try
{
SqlConnection con = new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=local");
string SelectQuery = "SELECT Name From [Group]";
con.Open();
SqlCommand cmd = new SqlCommand(SelectQuery, con);
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Groep.Items.Add(reader.GetString("Name"));
}
}
catch (Exception ex)
{
MessageBox.Show("Error occurred:\r\n" + ex.Message);
}
}
davy.ai
Para filtrar los elementos en tu segundo combobox basado en la selección del primer combobox, necesitas utilizar la vinculación de datos y actualizar la consulta en consecuencia.
Primero, debes vincular la propiedad
SelectedItem
del primer combobox a una propiedad en tu archivo de código detrás utilizando la vinculación de datos bidireccional. Agrega el siguiente código a tu XAML:A continuación, agrega una propiedad llamada
SelectedGroupName
a tu archivo de código detrás y actualiza el constructor para establecer elDataContext
en la instancia actual de la clase:Ahora, en tu método
bindcomboboxgroup
, actualiza la consulta para incluir una cláusula WHERE que filtre los resultados basados en el nombre de grupo seleccionado:Finalmente, agrega un controlador de eventos para el evento
SelectionChanged
del primer combobox que llame al métodobindcomboboxsort
:Y actualiza tu XAML para vincular el controlador de eventos: