Шаблон MVVM реализован в моем приложении Silverlight4.
Изначально я работал с ObservableCollection объектов в моей ViewModel:
public class SquadViewModel : ViewModelBase<ISquadModel>
{
public SquadViewModel(...) : base(...)
{
SquadPlayers = new ObservableCollection<SquadPlayerViewModel>();
...
_model.DataReceivedEvent += _model_DataReceivedEvent;
_model.RequestData(...);
}
private void _model_DataReceivedEvent(ObservableCollection<TeamPlayerData> allReadyPlayers, ...)
{
foreach (TeamPlayerData tpd in allReadyPlayers)
{
SquadPlayerViewModel sp = new SquadPlayerViewModel(...);
SquadPlayers.Add(sp);
}
}
...
}
Вот код XAML для отображения сетки:
xmlns:DataControls="clr-namespace:System.Windows.Controls;
assembly=System.Windows.Controls.Data"
...
<DataControls:DataGrid ItemsSource="{Binding SquadPlayers}">
...</DataControls:DataGrid>
и моя ViewModelсвязан со свойством DataContext представления.
Эта коллекция (SquadPlayers) не изменяется после ее создания, поэтому я хотел бы изменить ее тип на
List<SquadPlayerViewModel>
.Когда я это сделал, я также добавил
RaisePropertyChanged("SquadPlayers")
в конце метода _model_DataReceivedEvent (чтобы уведомить сетку об изменении данных списка.
Проблема заключается в том, что при первоначальном отображении сеткине показывает никаких записей ... Только когда я нажимаю на заголовок любого столбца, он выполняет "сортировку" и отображает все элементы из списка ...
Вопрос 1. Почему в таблице данных изначально нет элементов?Q2: Как сделать так, чтобы они отображались автоматически?
Спасибо.
PS Вот объявление нового объекта List в моей модели представления:
public List<SquadPlayerViewModel> SquadPlayers { get; set; }