Как добавить данные из ComboBox в DataGrid

Имеются две модели и две коллекции данных. В первую коллекцию добавляются "Категории", во вторую "Расходы". При добавлении новой "Категории" все работает корректно, данные отображаются в DataGrid. В ComboBox привязаны данные коллекции "Категории". При добавление данных в "Расходы" добавляются все, кроме категории. Как реализовать добавление нужной категории в коллекцию "Расходы" и корректно отобразить ее в DataGrid?

 public class Expenses: BaseViewModel
{
    public ObservableCollection<Сategories> categories ; 
    public string comment;
    public int sum;
    public DateTime datetime = DateTime.Now;

    public string Comment
    {
        get { return comment; }
        set { comment = value; }
        
    }
    public int Sum
    {
        get { return sum; }
        set { sum = value; }
       
    }
    public DateTime DateTime
    {
        get { return datetime; }
        set { datetime = value; }
    }
    public ObservableCollection<Сategories> Categories
    {
        get { return categories; }
        set { categories = value; }
    }

}

public class Сategories : BaseViewModel
{
    public string category;
    
    public string Category
    {
        get { return category; }
        set { category = value; }
    }

}

 public class MainWindowsViewsModel : BaseViewModel
{
    public ObservableCollection<Expenses> ExpensesCollection { get; set; }
    public ObservableCollection<Сategories> CategoriesCollection { get; set; }
    public Сategories Сategories { get; set; } = new Сategories();
    public Expenses Expenses { get; set; } = new Expenses();

   
    public MainWindowsViewsModel()
    {
        CategoryCommand = new LambdaCommand(OnCommandExecuted , CanCommandExecute);
        ExpensesCommand = new LambdaCommand(OnExpensesCommandExecuted, CanExpensesCommandExecute);
        CategoriesCollection = new ObservableCollection<Сategories>
        {
            new Сategories {Category = "Продукты питания"}
        };

        ExpensesCollection = new ObservableCollection<Expenses>
        {
            new Expenses
            {
                Sum = 1000,
                Comment = "Hello",
                DateTime = DateTime.Now,
                Categories = CategoriesCollection
                
            }
        };
        
        
    }
    public ICommand CategoryCommand { get; }

    private bool CanCommandExecute(object p)
    {
       return true;
    }

    private void OnCommandExecuted(object text)
    {
        CategoriesCollection.Add(Сategories);         
    }

    public ICommand ExpensesCommand { get; }

    private bool CanExpensesCommandExecute(object p)
    {
        return true;
    }

    private void OnExpensesCommandExecuted(object text)
    {
       ExpensesCollection.Add(Expenses);
    }

}
<Window x:Class="TestApp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    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 ="clr-namespace:TestApp.ViewModels"
    xmlns:cmd ="clr-namespace:TestApp.Commands"
    xmlns:local="clr-namespace:TestApp"
    mc:Ignorable="d"
    Title="Программа учета расходов" Height="450" Width="800">

<Window.DataContext>
    <vm:MainWindowsViewsModel/>
</Window.DataContext>
<DockPanel>
    <TabControl>
        <TabItem Header="Расходы">
            <DockPanel>
               <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition/>
                    </Grid.ColumnDefinitions>

                    <DataGrid Grid.Column="0" 
                              ItemsSource="{Binding ExpensesCollection}" 
                              SelectedItem="{Binding Expenses}"
                              AutoGenerateColumns="False" CanUserAddRows="False">
                        <DataGrid.Columns>
                            <DataGridTextColumn Header="Категория" Width="Auto" Binding="{Binding Path=Categories}" IsReadOnly="True"/>
                            <DataGridTextColumn Header="Сумма" Width="Auto" Binding="{Binding Sum}"/>
                            <DataGridTextColumn Header="Дата" Width="Auto" Binding="{Binding DateTime, StringFormat=dd.MM.yyyy}"/>
                            <DataGridTextColumn Header="Комментарий" Width="*" Binding="{Binding Comment}"/>
                        </DataGrid.Columns>
                    </DataGrid>
                   
                    <DockPanel Grid.Column="1">
                        <UniformGrid DockPanel.Dock="Bottom" HorizontalAlignment="Right">
                            <Button  Content="OK" Margin="10,0" Padding="35,5" IsDefault="True"
                                     Command="{Binding ExpensesCommand}"/>
                        </UniformGrid>
                        
                        <Grid Margin="5">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition/>
                                <ColumnDefinition/>
                            </Grid.ColumnDefinitions>

                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition Height="*"/>
                            </Grid.RowDefinitions>

                            <TextBlock Grid.Column="0" Grid.Row="0" Text="Период"/>
                            <DatePicker SelectedDate="{Binding Expenses.DateTime}" Grid.Column="1" Grid.Row="0"/>

                            <TextBlock Grid.Column="0" Grid.Row="1" Text="Категория"/>
                            <ComboBox SelectedItem="{Binding Expenses.Categories}" Grid.Column="1" Grid.Row="1"
                                      ItemsSource="{Binding CategoriesCollection}" 
                                      DisplayMemberPath="Category">
                            </ComboBox>

                            <TextBlock Grid.Column="0" Grid.Row="2" Text="Стоимость"/>
                            <TextBox Grid.Column="1" Grid.Row="2"
                                     Text="{Binding Expenses.Sum}"/>

                            <TextBlock Grid.Column="0" Grid.Row="3" Text="Комментарий"/>
                            <TextBox  Grid.Column="1" Grid.Row="3"
                                      Text="{Binding Expenses.Comment}"/>
                        </Grid>
                    </DockPanel>
                </Grid>
            </DockPanel>
        </TabItem>

        <TabItem Header="Категории">
            <StackPanel>
                
                <TextBlock Text="Введите наименование категори" Margin="5" FontSize="14"/>
                <WrapPanel >
                    <TextBox Text="{Binding Сategories.Category}"  Width="300"/>
                    <Button Grid.Column="1" Height="20" Content="Добавить" Margin="5"
                            Command="{Binding CategoryCommand}"/>
                </WrapPanel>

                <TextBlock Text="Наименование" HorizontalAlignment="Center" FontSize="14"/>
                <Grid >
                    <DataGrid ItemsSource="{Binding CategoriesCollection}" 
                          AutoGenerateColumns="False" CanUserAddRows="False" >
                        <DataGrid.Columns>
                            <DataGridTextColumn  Header="Категория" Width="*" Binding="{Binding Category}" IsReadOnly="True"/>
                        </DataGrid.Columns>
                    </DataGrid>
                </Grid>
            </StackPanel>
        </TabItem>
    </TabControl>

</DockPanel>

введите сюда описание изображения


Ответы (0 шт):