J'ai un formulaire qui se lie à un ViewModel (MVVM). Dans le formulaire, j'ai un ItemsControl qui est lié à un élément appelé projets dans mon DataContext. Lorsque j'effectue une sauvegarde à l'aide d'un modèle de commande, j'enregistre l'élément et effectue une extraction, puis je souhaite redéfinir ItemsControl dans la collection Projects. Cette partie ne semble pas fonctionner, tous mes appels de service fonctionnent comme prévu, mais ma vue ne rebondit pas sur la nouvelle collection avec l'élément ajouté, même si elle est renvoyée par le serveur.ItemsControl MVVM Binding
Toute aide avec ceci serait vraiment appréciée.
XAML
<ItemsControl Name="ProjectGrid"
Background="Transparent" ItemsSource="{Binding Path=Projects}" Margin="0,0,0,0" VerticalAlignment="Top"
ItemContainerStyle="{StaticResource alternatingWithTriggers}"
AlternationCount="2"
ItemTemplate="{StaticResource ItemTemplate}"/>
ViewModel
public ICommand SaveCommand
{
get
{
if (_cmdSave == null)
{
_cmdSave = new RelayCommand(Save, CanSave);
}
return _cmdSave;
}
}
public void Save()
{
MyService.Save();
PopulateModel();
}
private void PopulateModel()
{
Projects = MyService.GetProjects();
}
public ProjectDto[] Projects
{
get { return _projects; }
set
{
if (_projects == value)
return;
_projects = value;
Notify(PropertyChanged, o => Projects);
}
}
Qu'est-ce que est-ce que la méthode Notify fait? Si vous implémentez INotifyPropertyChanged pour la notification de modification, je pense que WPF s'attend à ce que le gestionnaire soit appelé quelque chose comme PropertyChanged (this, "Projects"); – jeffora
Je vais vérifier, mais je suis sûr que je le fais. – Burt
@jeffora: C'est ce que fait 'Notify (PropertyChanged, o => Projects)'. Beaucoup passent à des méthodes d'assistance qui acceptent une expression lambda afin d'éviter d'utiliser des littéraux de chaîne. –