MVVM не обновляет содержимое сетки данных - PullRequest
0 голосов
/ 19 мая 2011

У меня есть класс testviewModel, который реализовал событие INotifychanged и все его свойства.

public class testViewModel:INotifychanged
{
    public string ServiceTag
    {
        get { return _serviceTag; }
        set { _serviceTag = value;
        PropertChanged("ServiceTag");}
    }


}
public event PropertyChangedEventHandler PropertyChanged;

    private void PropertChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }

И у меня есть сетка данных, которая связывается со свойствами viewModel.

НаОкно загрузки Im привязки, используя, как это:

DataGrid.ItemsSource = ObservableCollection;

И это показывает записи в сетке данных со свойствами testViewModel.

Но когда яинициировать событие удаления, оно удаляет из базы данных, но не обновляет пользовательский интерфейс и не обновляет сетку данных.

Я звоню DataGrid.Items.Refresh ();

Нужно ли специальноудалить из наблюдаемой коллекции?Что я должен делать в xaml?

Ответы [ 2 ]

2 голосов
/ 19 мая 2011

Нужно ли специально удалять из наблюдаемой коллекции?

Да, потому что это то, с чем DataGrid связан. Он не может знать, что вы удалили запись из базы данных. Вы также можете полностью изменить коллекцию, если само свойство вызывает событие PropertyChanged, но вы должны просто удалить элемент из коллекции.

0 голосов
/ 05 февраля 2017
update your ObservableCollectionmembers too
Eg: 

private ObservableCollection<Member> memberCollection;
        public ObservableCollection<Member> MemberCollection
        {
            get { return memberCollection; }
            set { memberCollection = value;
                OnPropertyChanged();
            }
        }

public void SaveMember()
        {
            try
            {
                _bussiness.Update(SelectedMember);
                MemberCollection.Add(SelectedMember);
                ShowMessageBox(this, new MessageEventArgs()
                {
                    Message = "Changes are saved !"
                });
            }
            catch (Exception ex)
            {
                ShowMessageBox(this, new MessageEventArgs()
                {
                    Message = ex.Message
                });
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...