Avalonia DataGrid не принимает изменения от ComboBox
Есть две таблички с данными:
- krn_list, содержащая два поля krn_list_id, code
- krn_list_value, содержащая 4 поля krn_list_value, krn_list_id(связывание по значению из первой таблички), code, value
Все что я делаю, это пытаюсь засунуть коды из первой таблички в ComboBox, чтобы их можно было выбрать, далее я ищу krn_list_id выбранного кода и пытаюсь достать все строки из второй таблицы с таким же krn_list_id и засунуть их в DataGrid. Очевидно, что при каждом новом выборе из ComboxBox DataGrid должен обновляться. Выглядит это так:
ComboBox заполнен всеми необходимы параметрами из первой таблички. Но проблема в том, что при выборе нового параметра, DataGrid не меняется.
Я реализую приложение при помощи MVVM, а доступ к БД реализую с помощью entity framework. Данное окно вызывается из главного и называется AdminPanel. Структура проекта следующая:
Для этого окна я добавил свой ViewModel:
using System.Collections.ObjectModel;
using System.Linq;
using AvaloniaApplication3.Data;
using AvaloniaApplication3.Model;
using CommunityToolkit.Mvvm.ComponentModel;
namespace AvaloniaScantrak.ViewModels;
public partial class AdminPanelViewModel : ObservableObject
{
[ObservableProperty]
private ObservableCollection<string>? _parameterSettings = new ObservableCollection<string>{ };
[ObservableProperty]
private ObservableCollection<KrnListValue>? _parameters = new ObservableCollection<KrnListValue>{ };
[ObservableProperty]
private string? _selectedItemParameterSettings;
[ObservableProperty]
private int? _selectedItemParameterSettingsIndex=0;
[ObservableProperty]
private int? _selectedItemParameterSettingsId;
public AdminPanelViewModel()
{
using DbscanVladContext db = new DbscanVladContext();
var sett = db.KrnLists.ToList();
// отображение основных параметров
foreach (var u in sett)
{
if (u.Code != null) ParameterSettings?.Add(u.Code);
}
// отображение основных настроек
Parameters = new ObservableCollection<KrnListValue>((from paramer in db.KrnListValues where paramer.KrnListId == (SelectedItemParameterSettingsIndex+1) select paramer).ToList());
}
}
И во View разместил все элементы и настроил DataContext:
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="using:AvaloniaScantrak.ViewModels"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="AvaloniaScantrak.AdminPanel"
Title="AdminPanel"
x:DataType="vm:AdminPanelViewModel">
<Window.DataContext>
<vm:AdminPanelViewModel></vm:AdminPanelViewModel>
</Window.DataContext>
<Grid Name="MainGrid" RowDefinitions="Auto *">
<StackPanel Orientation="Horizontal">
<Label Margin="0 5 10 0" Content="Вид параметров:"></Label>
<ComboBox Width="200" Height="27"
Margin="0 5 0 0"
ItemsSource="{Binding ParameterSettings, Mode=TwoWay}"
SelectedItem="{Binding SelectedItemParameterSettings, Mode=TwoWay}"
SelectedIndex="{Binding SelectedItemParameterSettingsIndex, Mode=TwoWay}"
/>
</StackPanel>
<DataGrid Grid.Row="0" Margin="0 50 0 0" ItemsSource="{Binding Parameters, Mode=TwoWay}"
AutoGenerateColumns="True" IsReadOnly="False"
GridLinesVisibility="All"
BorderThickness="1" BorderBrush="Gray"
>
</DataGrid>
</Grid>
</Window>
Я сделал связывание combobox и datagrid идет через свойство Parameters, которое хранит в себе строки полученые из бд
Parameters = new ObservableCollection<KrnListValue>((from paramer in db.KrnListValues where paramer.KrnListId == (SelectedItemParameterSettingsIndex+1) select paramer).ToList());
Как правильно сделать так, чтобы при выборе из ComboBox менялся и DataGrid? Я недавно ознакомился с MVVM, поэтому мог допустить где-то ошибку. Спасибо.