Suche in listbox mit wpf
ich habe eine listview, gebunden mit Bemerkenswerte Sammlung von Objekten. Hier werden die Objekte sind "Fragen". Ich möchte zu implementieren eine Art von Suchmaschine. In die textbox oder so etwas. Aber ich habe 3 Spalten. 1 Beschreibung, 1 shortname und 1 von der Art der Frage. Hier ist der code meiner listview :
<ListView IsTextSearchEnabled="True" TextSearch.TextPath="Description" ScrollViewer.CanContentScroll="True" SelectedItem="{Binding Path=SelectedQuestionDragList, UpdateSourceTrigger=PropertyChanged,Mode=OneWayToSource}" dd:DragDrop.IsDragSource="True"
dd:DragDrop.IsDropTarget="False" Margin="0,34,393,333" Background="#CDC5CBC5" ScrollViewer.VerticalScrollBarVisibility="Visible"
dd:DragDrop.DropHandler="{Binding}" Name="listbox1" Height="155" ItemsSource="{Binding AvailableQuestions}" SelectionChanged="listbox1_SelectionChanged">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="Verkorte naam" Width="Auto" DisplayMemberBinding="{Binding Path=ShortName}" />
<GridViewColumn Header="Omschrijving" Width="Auto" DisplayMemberBinding="{Binding Path=Description}" />
<GridViewColumn Header="Type" Width="Auto" DisplayMemberBinding="{Binding Path=Type}" />
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
Ich habe bereits versucht eine Menge Dinge. Aber ich möchte nur zu halten, eine einfache Sache: eine textbox ,und wenn Sie füllen es, einige Briefe, das Programm hat filter, wo diese Kombination der Buchstaben ist vorhanden. Jemand, der weiß eine einfache Lösung oder ein Beispiel?
Dank!
InformationsquelleAutor Ruben | 2011-04-11
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bitte werfen Sie einen Blick auf CollectionViewSource
1) Erstellen Sie eine CollectionViewSource:
2) Legen Sie Ihre Liste als Quelle:
3) stellen Sie Ihre viewsource auf Ihrem ListView.
4) Wenn Sie dies getan haben, können Sie mithilfe der Filter-Eigenschaft:
5) Schließlich legen Sie die refresh-Methode des viewSource auf Ihre TextChanged Ihrer filter-Textfeld:
Hoffe, das hilft!
CollectionViewSource
, sei es, indem Sie es, oder verwenden Sie die Standardeinstellung.Können Sie dies tun, in deinem ViewModel als gut.
Ersten, binden Sie Ihre Textfeld, um eine Eigenschaft in der view-Modell. Stellen Sie sicher, dass Sie in Ihrem XAML-Code, legen Sie die
UpdateSourceTrigger
zuPropertyChanged
so erhalten Sie updates auf jedem Tastenanschlag.In der viewmodel, richten Sie Ihr Eigentum und Ihre
CollectionView
:In Ihrem Konstruktor, Draht, anzeigen und überwachen das propertychanged-Ereignis:
Hier ist ein benutzerdefiniertes Steuerelement, das ich gemacht, mit denen Sie filtern können, jede ItemsControls Kapselung jede Art von Sammlung von jeder Art von Objekten. Es ist besser, als zu halten Ihre code-behind-sauber : es ist Walken XAML decalrative und "Bindung" - kompatibel 😉
http://dotnetexplorer.blog.com/2011/04/07/wpf-itemscontrol-generic-staticreal-time-filter-custom-control-presentation/
Finden Sie code source mit Beispiel (mehr posts kommen, die tiefer in die Komponente)
Der Vorteil ist, dass Sie nicht haben, um über die Pflege der collection view-Management-und damit poluate Ihre vewmodel mit UI betrifft (denn man muss der Wahrheit ins Gesicht : auch wenn es in der view-Modell, das filtern einer collection ein vor allem ein UI-Anliegen und somit besser, nicht in der VM). Zumindest, dass die Logik im Verhalten 😉
Hier ist die einzige Sache, die Sie benötigen würden, um einen funktionierenden filter auf deine listbox/listview :