Silverlight - привязка к собственности? - PullRequest
2 голосов
/ 04 мая 2010

Я только начинаю с Silverlight. По сути, у меня есть пользовательский элемент управления silverlight, в котором есть различные dataGrids и выпадающий список, в качестве источников их элементов заданы свойства обычного простого объекта c #. Моя проблема в том, что у меня есть выпадающий список, когда пользователь выбирает элемент из списка, в одной из сеток должна появиться новая строка. Все, что я делаю - это обрабатываю событие SelectionChanged и добавляю новый элемент в список в моем пользовательском объекте, а затем снова устанавливаю источник элементов для сетки. Это не похоже на работу; строка не добавляется в dataGrid Я понятия не имею, как заставить мою сетку «перепривязать» к этому свойству. Я читал о свойствах зависимостей, это то, что мне нужно?

Любые указатели были бы очень благодарны.

Ответы [ 3 ]

3 голосов
/ 04 мая 2010

Список, к которому вы привязываете, должен иметь тип ObservableCollection.Затем сетка данных должна автоматически отобразить новый элемент.

2 голосов
/ 04 мая 2010

Проблема в том, что когда вы назначаете один и тот же список для ItemsSource, DataGrid знает, что тот же самый список, поэтому он ничего не делает.

Как отмечает Хенрик, вы должны предоставить Observable<T>, а не List<T> для свойств, которые должны быть связаны с ItemsSource свойствами элементов управления с несколькими элементами, таких как DataGrid, ListBox и т. Д.

Кроме того, ваши "обычные объекты c #" должны реализовывать интерфейс INotifyPropertyChanged, если вы хотите, чтобы изменения, вносимые кодом в эти свойства, автоматически отображались в пользовательском интерфейсе.

1 голос
/ 04 мая 2010

Что вы, вероятно, хотите сделать, это обновить источник привязки - что сделать относительно легко.

private void ComboBox_SelectionChanged(object sender, RoutedEventArgs e)
{
    this.dataGrid.GetBindingExpression(DataGrid.ItemsSource).UpdateSource();
}

Это немного взломать, но будет делать то, что вам нужно. Реализация INotifyPropertyChanged является еще одним отличным предложением.

В шоу Silverlight есть отличная информация о INotifyPropertyChanged здесь

...