private void OnAddExecute()
        {
            var wrapper = new PropertyItemWrapper <P>(new P());

            wrapper.PropertyChanged += Wrapper_PropertyChanged;
            _repository.Add(wrapper.Model);
            Properties.Add(wrapper);

            wrapper.Name = "";
        }
        private async void OnRemoveExecute()
        {
            if (IsReferenced().Result)
            {
                await MessageDialogService.ShowInfoDialogAsync($"Язык {SelectedProperty.Name}" +
                                                               $"  не может быть удален , так как выбран в друге", "AHTUNG");

                return;
            }

            SelectedProperty.PropertyChanged -= Wrapper_PropertyChanged;
            _repository.Delete(SelectedProperty.Model);
            Properties.Remove(SelectedProperty);
            SelectedProperty = null;
            HasChanges       = _repository.HasChanges();
            ((DelegateCommand)SaveCommand).RaiseCanExecuteChanged();
        }
        public async override Task LoadAsync(int id)
        {
            Id = id;

            foreach (var wrapper in Properties)
            {
                wrapper.PropertyChanged -= Wrapper_PropertyChanged;
            }
            Properties.Clear();


            var items = await _repository.GetAllAsync();

            foreach (var model in items)
            {
                var wrapper = new PropertyItemWrapper <P>(model);
                wrapper.PropertyChanged += Wrapper_PropertyChanged;
                Properties.Add(wrapper);
            }
        }