ich eine einfache treeview haben, wenn Klick auf treeview Artikel i laden Sie einfach eine TextdateiLesedatei async noch blockiert die UI
Hier ist der Code:
private async void NotesTreeView_OnSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
var clickedModel = e.NewValue as TreeFileItem;
if (clickedModel != null && File.Exists(clickedModel.FilePath))
{
_viewModel.NoteLoadingInProgress = true;
using (var reader = File.OpenText(clickedModel.FilePath))
{
var fileContent = await reader.ReadToEndAsync();
_viewModel.ActiveNote = fileContent;
}
_viewModel.NoteLoadingInProgress = false;
}
}
Dies funktioniert, aber wenn ich auf Bei einem Baumansicht-Element wird die UI eingefroren, bis das Lesen der Datei abgeschlossen ist. Warum solch ein Verhalten? Ich habe andere asynchrone Methoden in meinem Code und sie blockieren nicht ui.
EDIT: es scheint das Problem nicht Datei beim Lesen, aber große Menge an Text in Einstellung über Datenbindung TextBox.Text properti, obwohl es Einstellung direkt auch eine Menge Zeit in Anspruch nehmen und ui freeze
Danke für die Antwort, leider TextBox ist nicht in der Liste der Steuerelemente, die UI-Virtualisierung unterstützt – igorGIS
@igorGIS: Dann müssen Sie Ihr eigenes Virtualisierungssystem erstellen, oder verwenden Sie eine Textanzeige, die Virtualisierung unterstützt (IIRC gibt es eine Art von Dokumentensystem). –