Ich habe eine Listbox in XAML definiert als:WPF Listbox Nachziehen nicht
<ListBox x:Name="directoryList"
MinHeight="100"
Grid.Row="0"
ItemsSource="{Binding Path=SelectedDirectories}"/>
Die SelectedDirectories ist eine Eigenschaft, auf die Listen Datacontext vom Typ List<DirectoryInfo>
Die Klasse, die die Datacontext für die Listbox ist implementiert INotifyPropertyChanged . Wenn sich die Auflistung ändert, werden die Elemente erfolgreich zur Liste hinzugefügt, die Anzeige wird jedoch nicht aktualisiert, bis ich die Listbox erzwinge, die Größe neu zu bestimmen.
Irgendwelche Ideen warum?
EDIT: INotifyPropertyChanged Umsetzung
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));
}
}
}
Du hast Recht w.r.t. warum mein vorheriger Codeausschnitt funktioniert hat. Aktualisiert. +1 – Gishu
Was ich am Ende getan habe, war die Sammlung in einer Presenter-Klasse in einer ObservableCollection zu abstrahieren und dann nur bei Bedarf an die Scanner-Klasse zu übergeben. – benPearce