C# WPF MVVMW Почему при вызове команды StartListening у меня не меняется значение в таблице?





using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
using TheRepresentationOfTheDateInPsycholophysiology.Services;

namespace TheRepresentationOfTheDateInPsycholophysiology.Models
{
    public class AutONvertDataCommands : DataCommandsBase
    {
        AutONvertDataModel _model;
        private readonly LogService _logService;

        public ICommand AddDataSourceCommand { get; }
        public ICommand StartListeningCommand { get; }
        public ICommand StopListeningCommand { get; }

        public AutONvertDataCommands(AutONvertDataModel dataModel) : base(dataModel)
        {
            _model = dataModel;
            _logService = new LogService();

            AddDataSourceCommand = new RelayCommand(AddDataSource);
            StartListeningCommand = new RelayCommand(async () => await StartListening());
            StopListeningCommand = new RelayCommand(async () => await StopListening());
        }


        private void AddDataSource()
        {
            _model.DataSources.Add(new DataSource { Name = "New Source", Port = 0, Data = string.Empty, ListenerService = new UdpListenerService() });
        }

        private async Task StartListening()
        {
            foreach (var source in _model.DataSources)
            {
                if (source.Port > 0 && source.ListenerService != null)
                {
                    await source.ListenerService.StartListeningAsync(source.Port, data =>
                    {
                        App.Current.Dispatcher.Invoke(() =>
                        {
                            source.IsListening = true;
                            source.Data = data;
                            //AppendDebugText($"Received from {source.Name}: {data}");
                            //SerializeData();
                            _logService.LogData(source.Name, data);
                        });
                    });
                }
            }
        }

        private async Task StopListening()
        {

            foreach (var source in _model.DataSources)
            {
                if (source.ListenerService != null)
                {
                    source.IsListening = false;
                    await source.ListenerService.StopListeningAsync();
                }
            }

        }

        private void AppendDebugText(string text)
        {
            _model.DebugText += text + "\n";
        }

        private void SerializeData()
        {
            var json = JsonConvert.SerializeObject(_model.DataSources);
            AppendDebugText($"Serialized JSON: {json}");
        }
    }
}




......
        <!-- Data Sources -->
        <DataGrid Grid.Row="1" ItemsSource="{Binding DataModel.DataSources}" AutoGenerateColumns="False" CanUserAddRows="False">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Name" Binding="{Binding Name}" Width="*"/>
                <DataGridTextColumn Header="Port" Binding="{Binding Port}" Width="*"/>
                <DataGridTextColumn Header="Data" Binding="{Binding Data}" Width="*"/>
                <DataGridTextColumn Header="IsListening" Binding="{Binding IsListening}" Width="*"/>
            </DataGrid.Columns>
        </DataGrid>