WPF實(shí)現(xiàn)帶模糊搜索的DataGrid的示例代碼
帶模糊搜索的DataGrid
前端代碼 view
<Window
x:Class="MVVM.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:hc="https://handyorg.github.io/handycontrol"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:prism="http://prismlibrary.com/"
Title="{Binding Title}"
Width="525"
Height="350"
prism:ViewModelLocator.AutoWireViewModel="True">
<Grid>
<DataGrid
Name="dataGrid"
AutoGenerateColumns="False"
CanUserDeleteRows="True"
ItemsSource="{Binding CollectionView}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Id}" Header="Id" />
<DataGridTextColumn Binding="{Binding FirstName}" Header="FirstName" />
<DataGridTextColumn Binding="{Binding LastName}" Header="LastName" />
<DataGridTextColumn Binding="{Binding Birthday}" Header="Birthday" />
<DataGridTextColumn Binding="{Binding Salay}" Header="Salay" />
</DataGrid.Columns>
</DataGrid>
<Grid VerticalAlignment="Bottom">
<StackPanel Orientation="Horizontal">
<Button
Width="120"
Command="{Binding AddEmployeeCommand}"
Content="New Employee" />
<hc:TextBox
Name="filterTextBox"
Width="200"
Margin="5,0"
hc:InfoElement.Placeholder="Filter data by name"
Text="{Binding FilterText, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
</Grid>
</Grid>
</Window>
后端代碼 ViewModel
using Prism.Commands;
using Prism.Mvvm;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Data;
using 帶篩選的DataGrid.Core;
namespace MVVM.ViewModels
{
public class MainWindowViewModel : BindableBase
{
public MainWindowViewModel()
{
AddEmployeeCommand = new DelegateCommand(AddEmployee);
this.employees = new List<Employee>(Employee.FakeMany(10));
CollectionView = CollectionViewSource.GetDefaultView(employees);
CollectionView.Filter = (item) =>
{
if (string.IsNullOrEmpty(FilterText)) return true;
var em = item as Employee;
return em.FirstName.Contains(FilterText) || em.LastName.Contains(FilterText);
};
}
List<Employee> employees;
public DelegateCommand AddEmployeeCommand { get; set; }
private ICollectionView collectionView;
public ICollectionView CollectionView
{
get { return collectionView; }
set { SetProperty(ref collectionView, value); }
}
private string filterText;
public string FilterText
{
get { return filterText; }
set { SetProperty(ref filterText, value,OnFilterTextChanged); }
}
public void OnFilterTextChanged()
{
CollectionView.Refresh();
}
public void AddEmployee()
{
employees.Add(Employee.FakeOne());
CollectionView.Refresh();
}
}
}
Model 代碼,引用了 Faker 這個(gè)庫(kù)來(lái)創(chuàng)造假數(shù)據(jù)
using Bogus;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 帶篩選的DataGrid.Core
{
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateOnly Birthday { get; set; }
public int Salay { get; set; }
public static Employee FakeOne() => employeeFaker.Generate();
public static IEnumerable< Employee> FakeMany(int count ) => employeeFaker.Generate(count);
private static readonly Faker<Employee> employeeFaker = new Faker<Employee>()
.RuleFor(x => x.Id, x => x.IndexFaker)
.RuleFor(x => x.FirstName, x => x.Person.FirstName)
.RuleFor(x => x.LastName, x => x.Person.LastName)
.RuleFor(x => x.Birthday, x => DateOnly.FromDateTime(x.Person.DateOfBirth))
.RuleFor(x => x.Salay, x => x.Random.Int(6, 30) * 1000);
}
}
代碼:https://github.com/sw554227643/---DataGrid-MVVM--

到此這篇關(guān)于WPF實(shí)現(xiàn)帶模糊搜索的DataGrid的示例代碼的文章就介紹到這了,更多相關(guān)WPF模糊搜索DataGrid內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c#和javascript函數(shù)相互調(diào)用示例分享
在webBrowser使用過(guò)程中為了C#和JS通訊,webBrowser必須設(shè)置ObjectForScripting的屬性,它是一個(gè)object,這個(gè)object可以提供給webBrowser控件載入的網(wǎng)頁(yè)上的script訪問(wèn)2014-01-01
C#編寫Windows服務(wù)程序詳細(xì)步驟詳解(圖文)
本文介紹了如何用C#創(chuàng)建、安裝、啟動(dòng)、監(jiān)控、卸載簡(jiǎn)單的Windows Service 的內(nèi)容步驟和注意事項(xiàng),需要的朋友可以參考下2017-09-09
C# 進(jìn)行圖片壓縮的示例代碼(對(duì)jpg壓縮效果最好)
這篇文章主要介紹了C# 進(jìn)行圖片壓縮的示例代碼,幫助大家更好的利用c# 處理圖片,提高辦公效率,感興趣的朋友可以了解下2020-11-11
C#條件拼接Expression<Func<T, bool>>的使用
本文主要介紹了C#條件拼接Expression<Func<T, bool>>的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02

