It works for me like this:
XAML
<Window x:Class="Test.Search"
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"
mc:Ignorable="d"
Title="FilteringSample" Height="200" Width="300">
<DockPanel Margin="10">
<TextBox DockPanel.Dock="Top" Margin="0,0,0,10" Name="txtSearch" TextChanged="TxtSearch_TextChanged" />
<ListView Name="lvSearch">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" />
</GridView>
</ListView.View>
</ListView>
</DockPanel>
</Window>
Code behind:
using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
namespace Test
{
public partial class Search : Window
{
public Search()
{
InitializeComponent();
List<User> items = new List<User>();
items.Add(new User() { Name = "John Doe", Age = 42 });
items.Add(new User() { Name = "Jane Doe", Age = 39 });
lvSearch.ItemsSource = items;
CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(lvSearch.ItemsSource);
view.Filter = User_Filter;
}
private void TxtSearch_TextChanged(object sender, TextChangedEventArgs e)
{
CollectionViewSource.GetDefaultView(lvSearch.ItemsSource).Refresh();
}
private bool User_Filter(object item)
{
if (string.IsNullOrEmpty(txtSearch.Text))
{
return true;
}
else
{
return (item as User).Name.IndexOf(txtSearch.Text, StringComparison.OrdinalIgnoreCase) >= 0;
}
}
public class User
{
public string Name { get; set; }
public int Age { get; set; }
}
}
}
Commands class:
using Autodesk.AutoCAD.Runtime;
using AcAp = Autodesk.AutoCAD.ApplicationServices.Application;
namespace Test
{
public class Commands
{
[CommandMethod("SEARCHTEST")]
public void cmd_SearchTest()
{
var SearchDialog = new Search();
var result = AcAp.ShowModalWindow(SearchDialog);
}
}
}