Связывание Silverlight MVVM, похоже, не работает - PullRequest
1 голос
/ 21 марта 2010

Сборка моего первого приложения SL MVVM (Silverlight4 RC) и некоторые проблемы, которые я не понимаю.

Имея фон WPF, я не знаю, что здесь происходит:

ViewModel имеет несколько свойств, одно из которых называется SelectedRecord. Это свойство get only и определяется следующим образом:

    public Culture SelectedRecord { 
get { return culturesView.View.CurrentItem as Culture;  } }

Как вы можете видеть, он получает текущее значение CollectionViewSource (называемого CultureView). Поэтому, если я выбираю Культуру, SelectedRecord (получает значение непосредственно из CollectionViewSource), как и ожидалось. (На самом деле существует элемент управления сеткой данных, связанный с CollectionViewSource, следовательно, можно изменить выбранный элемент)

OK. Теперь для просмотра. Есть несколько представлений, которые обращаются к этой ViewModel, и, в частности, есть одно, которое показывает значения вышеупомянутого свойства SelectedRecord (назовем его EditView). Для отображения этого EditView есть кнопка (свойство которой Command связано с ICommand в ViewModel), которая работает (в первый раз), как и ожидалось.

Это означает:

1-я попытка: я выбираю запись, переключаюсь на EditView, результат: отображаются выбранные значения записи (как и ожидалось !!).

2-я попытка: переключиться обратно на сетку данных, выбрать другую запись, переключиться на EditView, результат: значения предыдущей показанной записи будут показаны снова !!! ПОЧЕМУ ??

Сначала я подумал, что в SelectedRecord задано неверное значение, но я ошибся: оно имеет правильное значение! Так и должно быть показано!?

Что мне не хватает? В WPF это будет работать !!

Заранее спасибо

1 Ответ

1 голос
/ 21 марта 2010

Когда значение CurrentItem изменяется, ваша ViewModel, у которой есть SelectedRecord, должна вызвать RaisePropertyChanged ("SelectedRecord"), чтобы любой привязанный View был уведомлен об изменении.

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