Bir metin kutumuz ve bir Datagrid var. Datagrid'in iki sütun adı ve E-posta adresi vardır. Datagrid değerlerini metin kutusundaki değerle filtrelemek istiyorum. filter wpf datagrid değerleri bir metin kutusundan silin
5
A
cevap
22
Daha sonra bir Filter
yüklemi uygulayabilirsiniz DataGrid
ItemSource
için ICollectionView
kullanmak ve gerektiğinde listesini refesh edebilir.
İşte çok hızlı bir örnek.
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>
Kodu:
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; }
}
}
Sonuç:
İlgili konular
- 1. WPF DataGrid
- 2. WPF DataGrid,
- 3. WPF DataGrid stili-Silverlight DataGrid?
- 4. Datagrid metin hizalaması
- 5. WPF DataGrid filtresi
- 6. WPF DataGrid AutoSize Sayı
- 7. WPF ToolKit DataGrid Performansı
- 8. WPF DataGrid multiselect bağlama
- 9. WPF Datagrid satır numarası
- 10. WPF DataGrid Sütun Genişliği
- 11. WPF DataGrid FareVeri VermeGridRow
- 12. WPF DataGrid Kontrol Şablonu
- 13. WPF DataGrid İyi Öğreticiler?
- 14. Odak, metin kutusundan nasıl kaldırılır?
- 15. Django ORM - alay değerleri(). Filter() zinciri
- 16. Satır seçildiğinde WPF DataGrid Satırının rengini ayarlama
- 17. metin kutusundan resim kutusuna resim kutusundan resim kutusu nasıl alınabilir
- 18. WPF DataGrid - sütuntan öğeleri al
- 19. WPF DataGrid seçili satır stili
- 20. wpf DataGrid sütun genişliği, ListBox
- 21. WPF Datagrid Sütunu nasıl odaklanır?
- 22. Özel sütunlarla WPF datagrid bağlaması
- 23. Animasyon WPF DataGrid Satır Ayrıntıları
- 24. Force DataGrid sütun doğrulaması (WPF)
- 25. Programlı olarak bir wpf datagrid öğesini sıralayın
- 26. Bir WpF datagrid sütununa SelectAll CheckBox ekleyin?
- 27. WPF DataGrid, PropertyChanged üzerinde güncelleştirilmiyor
- 28. wpf datagrid left padding'i kaldır
- 29. WPF DataGrid hücre arka planı bağlama kullanılarak
- 30. WPF Araç Takımı Datagrid - Özel Sekmeler
hangi sütunun, Adı veya E-posta ile? Ve MVVM tasarım desenini mi kullanıyorsunuz? – Colin
@Colin, MVVM – Mussammil