Wenn Sie die Filterung in Ihrer Sammlung aktivieren möchten, müssen Sie keine Operationen direkt in Ihrer Sammlung ausführen.
Verwenden Sie ICollectionView
und CollectionViewSource
für diesen Zweck.
Da Sie eine ObservableCollection
haben, können Sie so etwas tun.
ICollectionView contactsView;
public ICollectionView ContactsView
{
get { return contactsView; }
set
{
if(contactsView != value)
{
contactsView = value;
}
}
}
Und in dem Setter der ObservableCollection
public ObservableCollection<ContactType> Contacs
{
get { return _contacs; }
set
{
if(_contacs != value)
{
_contacs = value;
ContactsView = CollectionViewSource.GetDefaultView(value);
ContactsView.Filter = ContactsFilter;
}
}
}
wo ContactsFilter
ist eine Funktion, mit der Definition folgt.
bool ContactsFilter(object item)
{
var contact = item as ContactType;
if(condition)
return true; //show this item in ListView.
return false; //Do not show this item in ListView
}
und wann immer Sie wollen Elemente filtern, dass nur durch
ContactsView.Refresh();
tun kann, was ich denke, in der TextChanged
Ereignis Ihrer Textfeld sein wird, in dem Sie Suchkriterien eingeben.
Ausführlichere Artikel ist unter CollectionViewSource
Was Sie mit dem Update bedeuten sie? Ersetzen Sie das gesamte OC oder fügen Sie Datensätze hinzu oder entfernen Sie sie. – AnjumSKhan
Ich ersetze die gesamte Sammlung. – JuP
@rbm die "doppelte Pufferung", die Sie sagen, hat absolut nichts mit dem Problem zu tun gefragt. Der Benutzer hat nach einer besseren Möglichkeit gefragt, die Benutzerschnittstelle zu benachrichtigen, was im Backstage-Fall passiert. Der Doppelpuffer ist eine Bitmap-Optimierungstechnik, die nur für Winforms (nicht in UWP/WPF) gültig ist. –