效果展示:
部分代码:
using System.Collections.Generic;
using System.Linq;
using System.Windows;
namespace WpfApp8
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
List<string> listStr = new List<string>();
public MainWindow()
{
InitializeComponent();
for(int i=0;i<100;i++)
{
string str = "btn" + i.ToString();
listStr.Add(str);
}
listBox.ItemsSource = listStr;
}
private void SearchBar_SearchStarted(object sender, HandyControl.Data.FunctionEventArgs<string> e)
{
listBox.ItemsSource = null;
List<string> result = listStr.Where(item => item.Contains(e.Info)).ToList();
listBox.ItemsSource = result;
}
}
}
<Window x:Class="WpfApp8.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp8"
mc:Ignorable="d"
xmlns:hc="clr-namespace:HandyControl.Controls;assembly=HandyControl" xmlns:ex="https://handyorg.github.io/handycontrol"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60"/>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" Grid.Row="0">
<hc:SearchBar SearchStarted="SearchBar_SearchStarted" IsRealTime="True" Command="{Binding SearchCmd}" CommandParameter="{Binding Text,RelativeSource={RelativeSource Self}}" Width="600" Height="50"/>
</StackPanel>
<ListBox x:Name="listBox" Grid.Row="1"/>
</Grid>
</Window>