J'ai un listbox défini en XAML comme:WPF Listbox ne redessinant
<ListBox x:Name="directoryList"
MinHeight="100"
Grid.Row="0"
ItemsSource="{Binding Path=SelectedDirectories}"/>
Les SelectedDirectories est une propriété sur les listes DataContext de type List<DirectoryInfo>
La classe qui est le DataContext pour la zone de liste met en œuvre INotifyPropertyChanged . Lorsque la collection change, les éléments sont ajoutés avec succès à la liste, mais l'affichage ne se met pas à jour tant que je ne force pas la liste à redessiner en la redimensionnant.
Des idées pourquoi?
EDIT: mise en œuvre INotifyPropertyChanged
public class FileScannerPresenter : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private FileScanner _FileScanner;
public FileScannerPresenter()
{
this._FileScanner = new FileScanner();
}
public List<DirectoryInfo> SelectedDirectories
{
get
{
return _FileScanner.Directories;
}
}
public void AddDirectory(string path)
{
this._FileScanner.AddDirectory(path);
OnPropertyChanged("SelectedDirectories");
}
public void OnPropertyChanged(string property)
{
if (this.PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
}
Vous avez raison w.r.t. pourquoi mon extrait de code précédent a fonctionné. Actualisé. +1 – Gishu
Ce que j'ai fini par faire, c'est de faire abstraction de la collection dans une classe de présentateur dans une ObservableCollection et de la passer ensuite à la classe de scanner en cas de besoin. – benPearce