Ich habe ein Textfeld und ein Datagrid. Das Datagrid hat zwei Spalten Name und E-Mail-Adresse. Ich möchte die DataGrid-Werte mit dem Wert in der Textbox filtern. Filter WPF DataGrid-Werte aus einem Textfeld
5
A
Antwort
22
Sie können eine ICollectionView
für die DataGrid
ItemSource
verwenden, dann können Sie ein Filter
Prädikat anwenden und die Liste refesh bei Bedarf.
Hier ist ein sehr schnelles Beispiel.
XAML:
<Window x:Class="WpfApplication10.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="188" Width="288" Name="UI" >
<StackPanel DataContext="{Binding ElementName=UI}">
<TextBox Text="{Binding FilterString, UpdateSourceTrigger=PropertyChanged}" />
<DataGrid ItemsSource="{Binding DataGridCollection}" />
</StackPanel>
</Window>
Code:
namespace WpfApplication10
{
public partial class MainWindow : Window, INotifyPropertyChanged
{
private ICollectionView _dataGridCollection;
private string _filterString;
public MainWindow()
{
InitializeComponent();
DataGridCollection = CollectionViewSource.GetDefaultView(TestData);
DataGridCollection.Filter = new Predicate<object>(Filter);
}
public ICollectionView DataGridCollection
{
get { return _dataGridCollection; }
set { _dataGridCollection = value; NotifyPropertyChanged("DataGridCollection"); }
}
public string FilterString
{
get { return _filterString; }
set
{
_filterString = value;
NotifyPropertyChanged("FilterString");
FilterCollection();
}
}
private void FilterCollection()
{
if (_dataGridCollection != null)
{
_dataGridCollection.Refresh();
}
}
public bool Filter(object obj)
{
var data = obj as TestClass;
if (data != null)
{
if (!string.IsNullOrEmpty(_filterString))
{
return data.Name.Contains(_filterString) || data.Email.Contains(_filterString);
}
return true;
}
return false;
}
public IEnumerable<TestClass> TestData
{
get
{
yield return new TestClass { Name = "1", Email = "[email protected]" };
yield return new TestClass { Name = "2", Email = "[email protected]" };
yield return new TestClass { Name = "3", Email = "[email protected]" };
yield return new TestClass { Name = "4", Email = "[email protected]" };
yield return new TestClass { Name = "5", Email = "[email protected]" };
yield return new TestClass { Name = "6", Email = "[email protected]" };
yield return new TestClass { Name = "7", Email = "[email protected]" };
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string property)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
}
public class TestClass
{
public string Name { get; set; }
public string Email { get; set; }
}
}
Ergebnis:
Verwandte Themen
- 1. DataBind zu einem Textfeld in WPF
- 2. WPF DataGrid-Filter
- 3. WPF CommandParameter in Textfeld
- 4. WPF Weichzeichentext in Textfeld
- 5. Filter durch Eingabe in Textfeld
- 6. wpf collectionview mehrere Filter
- 7. wpf extend Kontextmenü von Textfeld
- 8. WPF Filter eine ListBox
- 9. Validierung in Textfeld in WPF
- 10. DataGridrow aus einem DataView WPF
- 11. Mehrere Spalten aus einem Textfeld aktualisieren
- 12. Einen Endpunkt aus einem Textfeld schlagen
- 13. WPF-Textfeld im "virtuellen" Modus
- 14. Filter RadioButtonList nach eingegebenem Text in Textfeld
- 15. Arbeiten mit Pfeiltasten in einem WPF-Textfeld (C#)
- 16. Wpf ListView mit Textboxen als Filter verwendet
- 17. Einfügen Textfeld in benutzerdefinierte Telerik Kendo Filter
- 18. WPF - Hit Test Filter Callback
- 19. Hinzufügen von Teilstrings aus einem Textfeld zu einem Listenfeld
- 20. Problem mit Textfeld Fokus in WPF
- 21. WPF Wie erstelle ich ein Textfeld dynamisch und finde das Textfeld bei einem Klick?
- 22. Warum ist mein WPF-Textfeld "irgendwie" schreibgeschützt?
- 23. eine Richtlinie aus einem Ergebnis von einem Filter
- 24. Wert aus Textfeld
- 25. Datum aus Textfeld vergleichen
- 26. Entfernen von Zeilen aus einem WPF-Datagrid
- 27. WPF-Stil löst auf einem TreeView aus?
- 28. WPF - Abrufen eines Eigenschaftswerts aus einem Bindungspfad
- 29. Entfernen von Symbol aus einem WPF-Fenster
- 30. Variable dynamisch aus Textfeld erstellen
von welcher Spalte, Namen oder E-Mail? Und verwenden Sie MVVM Design Pattern hier? – Colin
@Colin, wie man das in MVVM macht – Mussammil