Mam pole tekstowe i Datagrid. Datagrid ma dwie nazwy kolumn i adres e-mail. Chcę filtrować wartości datagrid z wartością w polu tekstowym. filtr wartości danych wpf z pola tekstowego
5
A
Odpowiedz
22
Można użyć ICollectionView
dla DataGrid
ItemSource
następnie można zastosować Filter
orzecznik i refesh listę, gdy są potrzebne.
Oto bardzo szybki przykład.
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>
Kod:
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; }
}
}
Wynik:
Powiązane problemy
- 1. Umożliwianie "wklejania danych" do pola tekstowego WPF
- 2. Uzyskiwanie wartości wejściowych z pola tekstowego
- 3. WPF Sprawdzanie poprawności niezwiązanego pola tekstowego
- 4. Ramka pola tekstowego WPF po wybraniu?
- 5. zmiana WPF lewy margines pola tekstowego
- 6. Jak usunąć obramowanie z pola tekstowego w WPF?
- 7. Przypisywanie wartości jednego pola tekstowego do innego
- 8. Zapisywanie wartości pola tekstowego w Rejestrze
- 9. Ustawienie wartości pola tekstowego dynamicznie utworzony z jQuery
- 10. Uzyskiwanie wartości z pola tekstowego mvc asp.net przy wysyłaniu kliknij
- 11. Crystal Reports Zawijanie pola tekstowego z zestawu danych
- 12. Jak uzyskać i ustawić aktualną pozycję kursora pola tekstowego WPF
- 13. Jak dodać przycisk "Wyczyść" do pola tekstowego w WPF?
- 14. Wstawianie tekstu do pola tekstowego WPF na stanowisku opiekuńczym
- 15. Filtr WPF ListBox
- 16. sprawdzanie długości pola tekstowego
- 17. Wykładanie pola tekstowego
- 18. Wysokość wprowadzania pola tekstowego
- 19. Blokowanie szerokości pola tekstowego
- 20. Przycisk tekstowego przycisku WPF
- 21. filtr django z listą wartości
- 22. Wiązanie dynamicznego pola tekstowego z listą
- 23. Formatowanie pola tekstowego numerycznego kendo
- 24. WPF: Powiązanie pola tekstowego z StringFormat = {} {0: F2}. Nie pokazuj zera
- 25. Jak dołączyć tekst do wartości pola tekstowego za pomocą jQuery?
- 26. Wiązanie pola wyboru WPF
- 27. Uzyskiwanie wartości pola tekstowego html w systemie Android
- 28. Formularz pola tekstowego HTML, który nie zezwoli na wprowadzenie danych
- 29. Przekazywanie wartości pola tekstowego przy użyciu pliku Html.ActionLink
- 30. Pola wstępnie wypełnionego pola tekstowego WebView
Przez co kolumna, nazwisko lub e-mail? Czy używasz tutaj wzorca projektowego MVVM? – Colin
@Colin, jak to zrobić w MVVM – Mussammil