Как сделать сортировку элементов с помощью ComboBox?
У меня возникла проблема, при попытке сортировать мои данные при выборе позиций из комбобокс моё приложение падает. Возможно виноват мой запрос к базе данных, но я не знаю как сделать его лучше, пожалуйста подскажите как можно реализовать сортировку более правильно, в отличи от моего решения.
Код сортировки
private void CB_Cat_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
List<GoodsModel> items = new List<GoodsModel>();
DB db = new DB();
db.openConnection();
MySqlCommand cmd = new MySqlCommand($"SELECT ID, Title, Description, Count, Cost FROM Goods LEFT JOIN Category C on C.ID = Goods.Cat WHERE C.Title = '{CB_Cat.Text}'", db.GetConnection());
using (var rd = cmd.ExecuteReader())
{
while (rd.Read())
{
items.Add(new GoodsModel() {ID = rd.GetInt32(0), Title = rd.GetString(1), Desc = rd.GetString(2), Count = rd.GetInt32(3), Cost = rd.GetInt32(4)});
}
}
icGoodsList.ItemsSource = items;
}
Код верстки
<ItemsControl Name="icGoodsList">
<ItemsControl.ItemTemplate>
<DataTemplate>
<materialDesign:Card Margin="20 10 20 10">
<DockPanel>
<Image Source="F:\C#\Stationery\Stationery\IMG\Pen.png" Height="100" Width="100" Margin="0 0 50 0"/>
<StackPanel
HorizontalAlignment="Left"
VerticalAlignment="Center"
>
<DockPanel>
<TextBlock
FontSize="20"
FontWeight="600"
Text="{Binding Title}"/>
<StackPanel Margin="20 10 0 0">
<TextBlock
Text="В наличии"
Foreground="Chartreuse"
/>
<TextBlock
Text="{Binding Count}"
/>
</StackPanel>
</DockPanel>
<TextBlock
FontSize="18"
FontWeight="400"
MaxWidth="250"
MaxHeight="50"
Margin="0 0 200 0"
Text="{Binding Desc}"
/>
</StackPanel>
<TextBlock
Foreground="#444444"
Margin="40 0 0 0"
VerticalAlignment="Center"
FontSize="26"
FontWeight="Bold"
Text="{Binding Cost}"
/>
<Label Content="{Binding ID}" Visibility="Hidden" Height="1" x:Name="Cat_Label"/>
<Button
ToolTip="В корзину"
Margin="0 0 5 0"
Width="50"
materialDesign:ButtonAssist.CornerRadius="15"
FontSize="16"
materialDesign:ShadowAssist.ShadowDepth="Depth0"
x:Name="btnBuy"
Click="BtnBuy"
>
<materialDesign:PackIcon Kind="CreditCard" />
</Button>
</DockPanel>
</materialDesign:Card>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Моя модель
public class GoodsModel
{
public int ID { get; set; }
public string Title { get; set; }
public string Desc { get; set; }
public int Count { get; set; }
public int Cost { get; set; }
}
