Как привязать дочернее свойство и все еще получать обновления? - PullRequest
0 голосов
/ 06 марта 2012

У меня есть следующие таблицы

CREATE TABLE parent
( 
   id           NUMBER(10, 0) NOT NULL, 
   name         VARCHAR2(15 CHAR) NOT NULL, 
   child_id     NUMBER(10, 0) NOT NULL, 
   primary key (id) 
); 

CREATE TABLE child
( 
   id           NUMBER(10, 0) NOT NULL, 
   name         VARCHAR2(15 CHAR) NOT NULL, 
   primary key (id) 
); 

ALTER TABLE parent 
ADD constraint foreign key (child_id) references child; 

И следующие XAML

<DataGrid Name="aDataGrid">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Path=NAME}" />
        <DataGridTextColumn Binding="{Binding Path=CHILD.NAME}" />
     </DataGrid.Columns>
</DataGrid>

Данные связаны так:

using(var context = new Entities())
{
    this.aDataGrid.ItemsSource = context.Parent.ToList();
}

Когда я:

var parent = this.aDataGrid.SelectedItem as Parent;
parent.Name = anotherName;

Первая ячейка обновляется в DataGrid немедленно.Но когда я:

var parent = this.aDataGrid.SelectedItem as Parent;
parent.Child = anotherChild;

автоматически не обновляет вторую ячейку.

Как это исправить?Чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Вам нужно включить INotifyPropertyChanged и RaisePropertyChanged "Child" в установщик вашего свойства Child?Это должно пометить привязку, которую нужно обновить - без этого привязка не знает, что свойство изменилось.
Если ваши родительские / дочерние объекты сгенерированы EF, вы можете зайти в Google «EF and MVVM», чтобы узнать, какприклеить эти объекты к вашему представлению пользовательского интерфейса - включая, но не ограничиваясь, запуск обновлений изменения свойств.

0 голосов
/ 06 марта 2012

Я мог бы заставить DataGrid загружать новые значения, используя

var itemsSource = this.aDataGrid.ItemsSource as IEnumerable<Parent>;
this.aDataGrid.ItemsSource = itemsSource.ToList();

Но это не так. Я только что обнаружил, что то же самое может быть достигнуто с

this.aDataGrid.Items.Refresh();

Но я все еще думаю, что это должно быть лучше

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