WPF DataGrid привязка - PullRequest
       1

WPF DataGrid привязка

2 голосов
/ 13 февраля 2011

Привет, я новичок в WPF и у меня небольшая проблема, надеюсь, вы мне поможете.

У меня есть DataGrid в родительском окне ... когда я открываю всплывающее окно и выбираю элемент, всплывающее окно закрывается, а DataGrid в родительском окне обновляется с выбранным элементом.

Моя проблема в том, что когда я устанавливаю свойство ItemSrid ItemSource, оно работает только в первый раз, но когда я добавляю другие элементы и устанавливаю ItemSrid DataGrid, он не обновляет Grid, хотя список, с которым он связан, обновляется.

Интересно, есть ли метод для DataBind (), такой как ASP.Net GridView

Ответы [ 2 ]

2 голосов
/ 13 февраля 2011

В WPF вашему классу обычно требуется реализовать INotifyPropertyChanged . Этот интерфейс предоставляет событие PropertyChanged, которое «уведомляет» об изменении свойства.

Вот пример из CodeProject

// Declare the PropertyChanged event
public event PropertyChangedEventHandler PropertyChanged;

// OnPropertyChanged will raise the PropertyChanged event passing the
// source property that is being updated.
private void OnPropertyChanged(object sender, string propertyName)
{
    if (this.PropertyChanged != null)
    {
        PropertyChanged(sender, new PropertyChangedEventArgs(propertyName));
    }
}

Обычно вы вызываете такой метод внутри установщика для свойства привязки.

Вы можете использовать ObservableCollection, как предлагает Хенк, поскольку ObservableCollection реализует этот интерфейс и имеет встроенное уведомление об изменениях (добавление, удаление и т. Д.). Обратите внимание, что создание новой коллекции ObservableCollection не вызовет уведомление

this.BindingCollection = new ObservableCollection(myList);

так что вам придется поднять уведомление самостоятельно

OnPropertyChanged(this, "BindingCollection");
1 голос
/ 13 февраля 2011

Какой Список вы используете?

Это должно работать так, как вы описали при использовании ObservableCollection.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...