├── .git-blame-ignore-revs ├── documents └── images │ └── screenshot.gif ├── Tests ├── MainViewModel.cs ├── App.xaml.cs ├── Cases │ ├── BasicCase.xaml.cs │ ├── DataGridCase.xaml.cs │ ├── CollectionViewCase.xaml.cs │ ├── CollectionViewSourceCase.xaml.cs │ ├── DataGridCase.xaml │ ├── DataGridCaseViewModel.cs │ ├── CollectionViewCase.xaml │ ├── CollectionViewSourceCase.xaml │ ├── BasicCaseViewModel.cs │ ├── CollectionViewSourceCaseViewModel.cs │ ├── BasicCase.xaml │ └── CollectionViewCaseViewModel.cs ├── MainWindow.xaml.cs ├── Tests.csproj ├── Util │ ├── Command.cs │ └── ViewModelBase.cs ├── AssemblyInfo.cs ├── MainWindow.xaml └── App.xaml ├── Demo ├── App.xaml ├── App.xaml.cs ├── Demo.csproj ├── AssemblyInfo.cs ├── MainWindow.xaml.cs ├── MainWindow.xaml └── Data │ └── Person.cs ├── scripts └── pack.ps1 ├── AutoCompleteComboBoxWpf ├── Windows │ └── Controls │ │ ├── AutoCompleteComboBox.xaml │ │ ├── AutoCompleteComboBoxSetting.cs │ │ └── AutoCompleteComboBox.xaml.cs └── AutoCompleteComboBoxWpf.csproj ├── .github └── ISSUE_TEMPLATE │ └── bug_report.md ├── LICENSE.md ├── CHANGELOG.md ├── AutoCompleteComboBoxWpf.sln ├── README.md └── .gitignore /.git-blame-ignore-revs: -------------------------------------------------------------------------------- 1 | b082ad1adfca0ff98700b56d5adf01fdeac88d0b 2 | -------------------------------------------------------------------------------- /documents/images/screenshot.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vain0x/DotNetKit.Wpf.AutoCompleteComboBox/HEAD/documents/images/screenshot.gif -------------------------------------------------------------------------------- /Tests/MainViewModel.cs: -------------------------------------------------------------------------------- 1 | using Tests.Util; 2 | 3 | namespace Tests 4 | { 5 | class MainViewModel : ViewModelBase 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Demo/App.xaml: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /Tests/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | namespace Tests 4 | { 5 | /// 6 | /// Interaction logic for App.xaml 7 | /// 8 | public partial class App : Application 9 | { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /scripts/pack.ps1: -------------------------------------------------------------------------------- 1 | #!/bin/pwsh 2 | # USAGE: ./scripts/pack 3 | 4 | # Cheatsheet for deployment: 5 | # - bump up version number in .csproj 6 | # - write CHANGELOG 7 | # - commit 8 | # - create Git tag 9 | # - build and pack 10 | # - publish to NuGet 11 | # - write release note there (copy from CHANGELOG) 12 | 13 | dotnet pack AutoCompleteComboBoxWpf -c Release 14 | -------------------------------------------------------------------------------- /Demo/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Configuration; 4 | using System.Data; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | 9 | namespace Demo 10 | { 11 | /// 12 | /// App.xaml 13 | /// 14 | public partial class App : Application 15 | { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Tests/Cases/BasicCase.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace Tests.Cases 4 | { 5 | /// 6 | /// Interaction logic for BasicCase.xaml 7 | /// 8 | public partial class BasicCase : UserControl 9 | { 10 | public BasicCase() 11 | { 12 | InitializeComponent(); 13 | 14 | DataContext = new BasicCaseViewModel(); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Demo/Demo.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WinExe 5 | net462;net8-windows 6 | true 7 | Demo 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Tests/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Data; 3 | 4 | namespace Tests 5 | { 6 | /// 7 | /// Interaction logic for MainWindow.xaml 8 | /// 9 | public partial class MainWindow : Window 10 | { 11 | public MainWindow() 12 | { 13 | InitializeComponent(); 14 | 15 | DataContext = new MainViewModel(); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Tests/Cases/DataGridCase.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace Tests.Cases 4 | { 5 | /// 6 | /// Interaction logic for DataGridCase.xaml 7 | /// 8 | public partial class DataGridCase : UserControl 9 | { 10 | public DataGridCase() 11 | { 12 | InitializeComponent(); 13 | 14 | DataContext = new DataGridCaseViewModel(); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Tests/Cases/CollectionViewCase.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace Tests.Cases 4 | { 5 | /// 6 | /// Interaction logic for CollectionViewCase.xaml 7 | /// 8 | public partial class CollectionViewCase : UserControl 9 | { 10 | public CollectionViewCase() 11 | { 12 | InitializeComponent(); 13 | 14 | DataContext = new CollectionViewCaseViewModel(); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Tests/Tests.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WinExe 5 | net8.0-windows 6 | enable 7 | true 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Tests/Cases/CollectionViewSourceCase.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace Tests.Cases 4 | { 5 | /// 6 | /// Interaction logic for CollectionViewSourceCase.xaml 7 | /// 8 | public partial class CollectionViewSourceCase : UserControl 9 | { 10 | public CollectionViewSourceCase() 11 | { 12 | InitializeComponent(); 13 | 14 | DataContext = new CollectionViewSourceCaseViewModel(); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Tests/Util/Command.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Input; 3 | 4 | namespace Tests.Util 5 | { 6 | sealed class Command : ICommand 7 | { 8 | readonly Action execute; 9 | 10 | public Command(Action execute) 11 | { 12 | this.execute = execute; 13 | } 14 | 15 | public event EventHandler? CanExecuteChanged { add { } remove { } } 16 | public bool CanExecute(object? _parameter) => true; 17 | public void Execute(object? parameter) => execute(parameter); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Demo/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly:ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] 11 | -------------------------------------------------------------------------------- /Tests/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly:ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] 11 | -------------------------------------------------------------------------------- /AutoCompleteComboBoxWpf/Windows/Controls/AutoCompleteComboBox.xaml: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /Tests/Util/ViewModelBase.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel; 3 | using System.Runtime.CompilerServices; 4 | 5 | namespace Tests.Util 6 | { 7 | public abstract class ViewModelBase : INotifyPropertyChanged 8 | { 9 | public event PropertyChangedEventHandler? PropertyChanged; 10 | 11 | protected void NotifyPropertyChanged(PropertyChangedEventArgs e) 12 | { 13 | PropertyChanged?.Invoke(this, e); 14 | } 15 | 16 | protected void SetField(ref T field, T value, [CallerMemberName] string? propertyName = null) 17 | { 18 | if (EqualityComparer.Default.Equals(field, value)) return; 19 | 20 | field = value; 21 | 22 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | Tip: When you encounter an issue, please check whether or not the same issue occurs by replacing `AutoCompleteComboBox` with `ComboBox`. 14 | 15 | **To Reproduce** 16 | Steps to reproduce the behavior: 17 | 1. Go to '...' 18 | 2. Click on '....' 19 | 3. Scroll down to '....' 20 | 4. See error 21 | 22 | **Expected behavior** 23 | A clear and concise description of what you expected to happen. 24 | 25 | **Screenshots** 26 | If applicable, add screenshots to help explain your problem. 27 | 28 | **Desktop (please complete the following information):** 29 | - OS: [e.g. Windows 11] 30 | - Framework [e.g. .NET 9, .NET Framework 4.6.2] 31 | - Version [e.g. 1.0.0] 32 | 33 | **Additional context** 34 | Add any other context about the problem here. 35 | -------------------------------------------------------------------------------- /Tests/MainWindow.xaml: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | 3 | Copyright (c) 2017 vain0 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /Tests/App.xaml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 17 | 18 | 19 | 22 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /AutoCompleteComboBoxWpf/AutoCompleteComboBoxWpf.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net462;net8-windows 4 | true 5 | DotNetKit 6 | DotNetKit.Wpf.AutoCompleteComboBox 7 | Provides a lightweight combobox with filtering (auto-complete). 8 | Copyright (c) 2017 vain0 9 | 2.0.1 10 | vain0 11 | https://github.com/vain0x/DotNetKit.Wpf.AutoCompleteComboBox 12 | http://opensource.org/licenses/MIT 13 | Wpf Combobox AutoComplete 14 | https://github.com/vain0x/DotNetKit.Wpf.AutoCompleteComboBox 15 | LICENSE.md 16 | README.md 17 | 18 | 19 | True 20 | True 21 | 22 | 23 | 24 | True 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /Tests/Cases/DataGridCase.xaml: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /Demo/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Linq; 5 | using System.Runtime.CompilerServices; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | using System.Windows; 9 | using System.Windows.Controls; 10 | using System.Windows.Data; 11 | using System.Windows.Documents; 12 | using System.Windows.Input; 13 | using System.Windows.Media; 14 | using System.Windows.Media.Imaging; 15 | using System.Windows.Navigation; 16 | using System.Windows.Shapes; 17 | using Demo.Data; 18 | 19 | namespace Demo 20 | { 21 | /// 22 | /// MainWindow.xaml 23 | /// 24 | public partial class MainWindow : Window 25 | { 26 | sealed class ViewModel 27 | : INotifyPropertyChanged 28 | { 29 | #region INotifyPropertyChanged 30 | public event PropertyChangedEventHandler PropertyChanged; 31 | 32 | void SetField(ref X field, X value, [CallerMemberName] string propertyName = null) 33 | { 34 | if (EqualityComparer.Default.Equals(field, value)) return; 35 | 36 | field = value; 37 | 38 | var h = PropertyChanged; 39 | if (h != null) h(this, new PropertyChangedEventArgs(propertyName)); 40 | } 41 | #endregion 42 | 43 | public IReadOnlyList Items 44 | { 45 | get { return PersonModule.All; } 46 | } 47 | 48 | Person selectedItem; 49 | public Person SelectedItem 50 | { 51 | get { return selectedItem; } 52 | set { SetField(ref selectedItem, value); } 53 | } 54 | 55 | long? selectedValue; 56 | public long? SelectedValue 57 | { 58 | get { return selectedValue; } 59 | set { SetField(ref selectedValue, value); } 60 | } 61 | } 62 | 63 | public MainWindow() 64 | { 65 | InitializeComponent(); 66 | 67 | DataContext = new ViewModel(); 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # CHANGELOG 2 | 3 | (On NuGet: [DotNetKit.Wpf.AutoCompleteComboBox versions](https://www.nuget.org/packages/DotNetKit.Wpf.AutoCompleteComboBox#versions-tab).) 4 | 5 | ---- 6 | 7 | ## 2.0.1 - 2025-11-29 8 | 9 | - Fix [Dropdown only opening on second click #39](https://github.com/vain0x/DotNetKit.Wpf.AutoCompleteComboBox/issues/39) 10 | 11 | ## 2.0.0 - 2025-10-28 12 | 13 | - Tracking PR: [v2 plan](https://github.com/vain0x/DotNetKit.Wpf.AutoCompleteComboBox/pull/38) 14 | - *BREAKING CHANGE* 15 | - Upgrade to .NET 8 (from .NET 6) 16 | - [Fix filter affects bound source collection by adding a dedicated FilterCollection by Fruchtzwerg94 · Pull Request #26](https://github.com/vain0x/DotNetKit.Wpf.AutoCompleteComboBox/pull/26) is reverted 17 | - Fix 18 | - [Properly synchronize the current selected item - Improve and fix #28 by kvpt · Pull Request #29 · vain0x/DotNetKit.Wpf.AutoCompleteComboBox](https://github.com/vain0x/DotNetKit.Wpf.AutoCompleteComboBox/pull/29) 19 | - Filter changes are applied when dropdown opened 20 | - *Internals* (backward-compatible) 21 | - Project/solution files are recreated (assembly name and namespaces are still unchanged) 22 | - *Announcement*: The repository will soon be renamed to a shorter name. 23 | 24 | ## 1.6.0 - 2023-04-22 25 | 26 | - [Try to keep SelectedItem when changing ItemsSource by tmijail · Pull Request #28](https://github.com/vain0x/DotNetKit.Wpf.AutoCompleteComboBox/pull/28) 27 | 28 | ## 1.5.0 - 2023-04-02 29 | 30 | - Upgrade to .NET Framework 4.6.2 and .NET 6 31 | - [Fix filter affects bound source collection by adding a dedicated FilterCollection by Fruchtzwerg94 · Pull Request #26](https://github.com/vain0x/DotNetKit.Wpf.AutoCompleteComboBox/pull/26) 32 | 33 | ## 1.4.0 - 2021-10-17 34 | 35 | - [Don't show empty list · Issue #20](https://github.com/vain0x/DotNetKit.Wpf.AutoCompleteComboBox/issues/20) 36 | 37 | ## 1.3.1 - 2020-03-18 38 | 39 | - [Fix filter regression by kvpt · Pull Request #12](https://github.com/vain0x/DotNetKit.Wpf.AutoCompleteComboBox/pull/12) 40 | 41 | ## 1.3.0 42 | 43 | - [Upgrade to DotNetCore 3.1 by kvpt · Pull Request #9](https://github.com/vain0x/DotNetKit.Wpf.AutoCompleteComboBox/pull/9) 44 | - [Combine combobox filter with items/CollectionView filter by kvpt · Pull Request #10](https://github.com/vain0x/DotNetKit.Wpf.AutoCompleteComboBox/pull/10) 45 | 46 | ## 1.2.0 47 | 48 | ... 49 | -------------------------------------------------------------------------------- /Tests/Cases/DataGridCaseViewModel.cs: -------------------------------------------------------------------------------- 1 | using Demo.Data; 2 | using System.Collections.ObjectModel; 3 | using System.Linq; 4 | using Tests.Util; 5 | 6 | namespace Tests.Cases 7 | { 8 | public class DataGridCaseViewModel : ViewModelBase 9 | { 10 | public DataGridCaseViewModel() 11 | { 12 | testItems = new ObservableCollection(); 13 | 14 | for (int i = 1; i <= 14; i++) 15 | { 16 | testItems.Add(new TestItem() 17 | { 18 | BaseName = "Base" + i.ToString(), 19 | PersonId = 10, 20 | }); 21 | } 22 | } 23 | 24 | private static readonly Person[] Persons = PersonModule.All.Take(50).ToArray(); 25 | 26 | private Person? selectedItem; 27 | public Person? SelectedItem 28 | { 29 | get { return selectedItem; } 30 | set { SetField(ref selectedItem, value); } 31 | } 32 | 33 | private long? selectedValue; 34 | public long? SelectedValue 35 | { 36 | get { return selectedValue; } 37 | set { SetField(ref selectedValue, value); } 38 | } 39 | 40 | private ObservableCollection testItems; 41 | public ObservableCollection TestItems 42 | { 43 | get { return testItems; } 44 | set { SetField(ref testItems, value); } 45 | } 46 | 47 | public class TestItem : ViewModelBase 48 | { 49 | private long personId; 50 | public long PersonId 51 | { 52 | get { return personId; } 53 | set { SetField(ref personId, value); } 54 | } 55 | 56 | private string baseName = ""; 57 | public string BaseName 58 | { 59 | get { return baseName; } 60 | set { SetField(ref baseName, value); } 61 | } 62 | 63 | // Use distinct ItemsSource instance for each row to avoid comboxes affecting each other of the same source. (#26) 64 | // ReadOnlyCollection is a readonly wrapper of list. 65 | private ReadOnlyCollection itemsSource = new ReadOnlyCollection(Persons); 66 | public ReadOnlyCollection ItemsSource 67 | { 68 | get { return itemsSource; } 69 | } 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /Tests/Cases/CollectionViewCase.xaml: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 20 | 21 | 22 | 23 | 24 | Id = . 25 | 26 | 27 | 28 | 29 | 30 | Filter: 31 | 32 | 33 | 36 | 37 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /AutoCompleteComboBoxWpf/Windows/Controls/AutoCompleteComboBoxSetting.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace DotNetKit.Windows.Controls 4 | { 5 | /// 6 | /// Represents an object to configure . 7 | /// 8 | public class AutoCompleteComboBoxSetting 9 | { 10 | /// 11 | /// Gets a filter function which determines whether items should be suggested or not 12 | /// for the specified query. 13 | /// Default: Gets the filter which maps an item to true 14 | /// if its text contains the query (case insensitive). 15 | /// 16 | /// 17 | /// The string input by user. 18 | /// 19 | /// 20 | /// The function to get a string which identifies the specified item. 21 | /// 22 | /// 23 | public virtual Predicate GetFilter(string query, Func stringFromItem) 24 | { 25 | return item => stringFromItem(item).IndexOf(query, StringComparison.InvariantCultureIgnoreCase) >= 0; 26 | } 27 | 28 | /// 29 | /// Gets an integer. 30 | /// The combobox opens the drop down 31 | /// if the number of suggested items is less than the value. 32 | /// Note that the value is larger, it's heavier to open the drop down. 33 | /// Default: 100. 34 | /// 35 | public virtual int MaxSuggestionCount 36 | { 37 | get { return 100; } 38 | } 39 | 40 | /// 41 | /// Gets the duration to delay updating the suggestion list. 42 | /// Returns Zero if no delay. 43 | /// Default: 300ms. 44 | /// 45 | public virtual TimeSpan Delay 46 | { 47 | get { return TimeSpan.FromMilliseconds(300.0); } 48 | } 49 | 50 | static AutoCompleteComboBoxSetting @default = new AutoCompleteComboBoxSetting(); 51 | 52 | /// 53 | /// Gets the default setting. 54 | /// 55 | public static AutoCompleteComboBoxSetting Default 56 | { 57 | get { return @default; } 58 | set 59 | { 60 | if (value == null) throw new ArgumentNullException(nameof(value)); 61 | @default = value; 62 | } 63 | } 64 | } 65 | } -------------------------------------------------------------------------------- /Tests/Cases/CollectionViewSourceCase.xaml: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | Combine combobox filter with items/CollectionView filter (#10) 14 | Changing Items source should preserve SelectedItem if possible (#28) 15 | 16 | 17 | 24 | 25 | 26 | 27 | 28 | Id = . 29 | 30 | 31 | 32 | 33 | 34 | Filter: 35 | 36 | 37 | 40 | 41 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /Demo/MainWindow.xaml: -------------------------------------------------------------------------------- 1 | 14 | 15 | 16 | 17 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 57 | 58 | 59 | 60 | 61 | 62 | Some descriptions. Id = . 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /Tests/Cases/BasicCaseViewModel.cs: -------------------------------------------------------------------------------- 1 | using Demo.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Windows.Data; 6 | using System.Windows.Input; 7 | using Tests.Util; 8 | 9 | namespace Tests.Cases 10 | { 11 | public class BasicCaseViewModel : ViewModelBase 12 | { 13 | public BasicCaseViewModel() 14 | { 15 | SelectPrevCommand = new Command(_ => SelectPrev()); 16 | SelectNextCommand = new Command(_ => SelectNext()); 17 | ReloadCommand = new Command(_ => Reload()); 18 | ClearCommand = new Command(_ => Clear()); 19 | } 20 | 21 | List items = new(PersonModule.All); 22 | public List Items 23 | { 24 | get => items; 25 | set { SetField(ref items, value); } 26 | } 27 | 28 | string? text; 29 | public string? Text 30 | { 31 | get { return text; } 32 | set { SetField(ref text, value); } 33 | } 34 | 35 | int selectedIndex = -1; 36 | public int SelectedIndex 37 | { 38 | get => selectedIndex; 39 | set { SetField(ref selectedIndex, value); } 40 | } 41 | 42 | Person? selectedItem; 43 | public Person? SelectedItem 44 | { 45 | get => selectedItem; 46 | set { SetField(ref selectedItem, value); } 47 | } 48 | 49 | long? selectedValue; 50 | public long? SelectedValue 51 | { 52 | get => selectedValue; 53 | set { SetField(ref selectedValue, value); } 54 | } 55 | 56 | //private string filter = ""; 57 | //public string Filter 58 | //{ 59 | // get => filter; 60 | // set { SetField(ref filter, value); } 61 | //} 62 | 63 | public ICommand SelectPrevCommand { get; init; } 64 | void SelectPrev() 65 | { 66 | if (SelectedIndex > 0) 67 | { 68 | SelectedIndex--; 69 | } 70 | } 71 | 72 | public ICommand SelectNextCommand { get; init; } 73 | void SelectNext() 74 | { 75 | if (SelectedIndex >= 0) 76 | { 77 | SelectedIndex++; 78 | } 79 | } 80 | 81 | public ICommand ReloadCommand { get; init; } 82 | public void Reload() 83 | { 84 | var newItems = new List(PersonModule.All); 85 | newItems.Insert(0, new Person( 86 | Items.Count + 1, 87 | "Random person " + Random.Shared.NextInt64() 88 | )); 89 | Items = newItems; 90 | //SelectedValue = Items[0].Id; 91 | } 92 | 93 | public ICommand ClearCommand { get; init; } 94 | public void Clear() 95 | { 96 | Items = new List(); 97 | } 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /Tests/Cases/CollectionViewSourceCaseViewModel.cs: -------------------------------------------------------------------------------- 1 | using Demo.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Collections.ObjectModel; 5 | using System.Windows.Data; 6 | using System.Windows.Input; 7 | using Tests.Util; 8 | 9 | namespace Tests.Cases 10 | { 11 | class CollectionViewSourceCaseViewModel : ViewModelBase 12 | { 13 | public CollectionViewSourceCaseViewModel() 14 | { 15 | items = new(PersonModule.All); 16 | cvs = new CollectionViewSource 17 | { 18 | Source = items, 19 | }; 20 | ReloadCommand = new Command(_ => Reload()); 21 | ClearCommand = new Command(_ => Clear()); 22 | 23 | cvs.Filter += (_, e) => 24 | { 25 | var item = (Person)e.Item; 26 | e.Accepted = item.Name.Contains(Filter, StringComparison.OrdinalIgnoreCase); 27 | }; 28 | } 29 | 30 | ObservableCollection items; 31 | public ObservableCollection Items 32 | { 33 | get => items; 34 | set { SetField(ref items, value); } 35 | } 36 | 37 | CollectionViewSource cvs; 38 | public CollectionViewSource CollectionViewSource => cvs; 39 | 40 | Person? selectedItem; 41 | public Person? SelectedItem 42 | { 43 | get => selectedItem; 44 | set { SetField(ref selectedItem, value); } 45 | } 46 | 47 | long? selectedValue; 48 | public long? SelectedValue 49 | { 50 | get => selectedValue; 51 | set { SetField(ref selectedValue, value); } 52 | } 53 | 54 | private string filter = ""; 55 | public string Filter 56 | { 57 | get => filter; 58 | set 59 | { 60 | SetField(ref filter, value); 61 | cvs.View.Refresh(); 62 | } 63 | } 64 | 65 | public ICommand ReloadCommand { get; init; } 66 | public void Reload() 67 | { 68 | var newItems = new List(PersonModule.All); 69 | newItems.Insert(0, GenerateRandomPerson()); 70 | using (cvs.DeferRefresh()) 71 | { 72 | Items.Clear(); 73 | foreach (var item in newItems) 74 | { 75 | Items.Add(item); 76 | } 77 | } 78 | 79 | SelectedValue = newItems[0].Id; 80 | cvs.View.Refresh(); 81 | } 82 | 83 | public ICommand ClearCommand { get; init; } 84 | public void Clear() 85 | { 86 | Items.Clear(); 87 | cvs.View.Refresh(); 88 | } 89 | 90 | static Person GenerateRandomPerson() 91 | { 92 | sLastId++; 93 | var id = sLastId; 94 | return new Person(id, $"Person {id}"); 95 | } 96 | 97 | static long sLastId = PersonModule.All.Count; 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /Tests/Cases/BasicCase.xaml: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 34 | 35 | 36 | 37 | 38 | Id = . 39 | 40 | 41 | 42 | 43 | 44 | 47 | 48 | 51 | 52 | 55 | 56 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /Tests/Cases/CollectionViewCaseViewModel.cs: -------------------------------------------------------------------------------- 1 | using Demo.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Collections.ObjectModel; 5 | using System.Windows.Data; 6 | using System.Windows.Input; 7 | using Tests.Util; 8 | 9 | namespace Tests.Cases 10 | { 11 | class CollectionViewCaseViewModel : ViewModelBase 12 | { 13 | public CollectionViewCaseViewModel() 14 | { 15 | source = new ObservableCollection(allItems); 16 | collectionView = new(source); 17 | ReloadCommand = new Command(_ => Reload()); 18 | ClearCommand = new Command(_ => Clear()); 19 | } 20 | 21 | List allItems = new(PersonModule.All); 22 | readonly ObservableCollection source; 23 | 24 | readonly ListCollectionView collectionView; 25 | public ListCollectionView CollectionView => collectionView; 26 | 27 | Person? selectedItem; 28 | public Person? SelectedItem 29 | { 30 | get => selectedItem; 31 | set { SetField(ref selectedItem, value); } 32 | } 33 | 34 | long? selectedValue; 35 | public long? SelectedValue 36 | { 37 | get => selectedValue; 38 | set { SetField(ref selectedValue, value); } 39 | } 40 | 41 | private string filter = ""; 42 | public string Filter 43 | { 44 | get => filter; 45 | set 46 | { 47 | SetField(ref filter, value); 48 | 49 | // Do not this; changing Filter is overwritten by the library. 50 | //collectionView.Filter = obj => 51 | //{ 52 | // var item = (Person)obj; 53 | // return item.Name.Contains(Filter, StringComparison.OrdinalIgnoreCase); 54 | //}; 55 | //collectionView.Refresh(); 56 | 57 | ResetSource(); 58 | } 59 | } 60 | 61 | public ICommand ReloadCommand { get; init; } 62 | public void Reload() 63 | { 64 | // Regenerate items. 65 | var newItems = new List(PersonModule.All); 66 | newItems.Insert(0, GenerateRandomPerson()); 67 | allItems = newItems; 68 | 69 | ResetSource(); 70 | 71 | //SelectedValue = newItems[0].Id; 72 | //CollectionView.Refresh(); 73 | } 74 | 75 | void ResetSource() 76 | { 77 | source.Clear(); 78 | foreach (var item in allItems) 79 | { 80 | if (item.Name.Contains(filter, StringComparison.OrdinalIgnoreCase)) 81 | { 82 | source.Add(item); 83 | } 84 | } 85 | } 86 | 87 | public ICommand ClearCommand { get; init; } 88 | public void Clear() 89 | { 90 | source.Clear(); 91 | //CollectionView.Refresh(); 92 | } 93 | 94 | static Person GenerateRandomPerson() 95 | { 96 | sLastId++; 97 | var id = sLastId; 98 | return new Person(id, $"Person {id}"); 99 | } 100 | 101 | static long sLastId = PersonModule.All.Count; 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /AutoCompleteComboBoxWpf.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.0.31903.59 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoCompleteComboBoxWpf", "AutoCompleteComboBoxWpf\AutoCompleteComboBoxWpf.csproj", "{6CE5B53F-34DB-4EA7-8E15-6F76074592EC}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo", "Demo\Demo.csproj", "{C065E4A9-AC19-4D66-970F-1D5F1E9FE05C}" 9 | EndProject 10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests\Tests.csproj", "{F73CBB83-CF4E-40F1-AF40-E36D900A596B}" 11 | EndProject 12 | Global 13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 14 | Debug|Any CPU = Debug|Any CPU 15 | Debug|x64 = Debug|x64 16 | Debug|x86 = Debug|x86 17 | Release|Any CPU = Release|Any CPU 18 | Release|x64 = Release|x64 19 | Release|x86 = Release|x86 20 | EndGlobalSection 21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 22 | {6CE5B53F-34DB-4EA7-8E15-6F76074592EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 23 | {6CE5B53F-34DB-4EA7-8E15-6F76074592EC}.Debug|Any CPU.Build.0 = Debug|Any CPU 24 | {6CE5B53F-34DB-4EA7-8E15-6F76074592EC}.Debug|x64.ActiveCfg = Debug|Any CPU 25 | {6CE5B53F-34DB-4EA7-8E15-6F76074592EC}.Debug|x64.Build.0 = Debug|Any CPU 26 | {6CE5B53F-34DB-4EA7-8E15-6F76074592EC}.Debug|x86.ActiveCfg = Debug|Any CPU 27 | {6CE5B53F-34DB-4EA7-8E15-6F76074592EC}.Debug|x86.Build.0 = Debug|Any CPU 28 | {6CE5B53F-34DB-4EA7-8E15-6F76074592EC}.Release|Any CPU.ActiveCfg = Release|Any CPU 29 | {6CE5B53F-34DB-4EA7-8E15-6F76074592EC}.Release|Any CPU.Build.0 = Release|Any CPU 30 | {6CE5B53F-34DB-4EA7-8E15-6F76074592EC}.Release|x64.ActiveCfg = Release|Any CPU 31 | {6CE5B53F-34DB-4EA7-8E15-6F76074592EC}.Release|x64.Build.0 = Release|Any CPU 32 | {6CE5B53F-34DB-4EA7-8E15-6F76074592EC}.Release|x86.ActiveCfg = Release|Any CPU 33 | {6CE5B53F-34DB-4EA7-8E15-6F76074592EC}.Release|x86.Build.0 = Release|Any CPU 34 | {C065E4A9-AC19-4D66-970F-1D5F1E9FE05C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 35 | {C065E4A9-AC19-4D66-970F-1D5F1E9FE05C}.Debug|Any CPU.Build.0 = Debug|Any CPU 36 | {C065E4A9-AC19-4D66-970F-1D5F1E9FE05C}.Debug|x64.ActiveCfg = Debug|Any CPU 37 | {C065E4A9-AC19-4D66-970F-1D5F1E9FE05C}.Debug|x64.Build.0 = Debug|Any CPU 38 | {C065E4A9-AC19-4D66-970F-1D5F1E9FE05C}.Debug|x86.ActiveCfg = Debug|Any CPU 39 | {C065E4A9-AC19-4D66-970F-1D5F1E9FE05C}.Debug|x86.Build.0 = Debug|Any CPU 40 | {C065E4A9-AC19-4D66-970F-1D5F1E9FE05C}.Release|Any CPU.ActiveCfg = Release|Any CPU 41 | {C065E4A9-AC19-4D66-970F-1D5F1E9FE05C}.Release|Any CPU.Build.0 = Release|Any CPU 42 | {C065E4A9-AC19-4D66-970F-1D5F1E9FE05C}.Release|x64.ActiveCfg = Release|Any CPU 43 | {C065E4A9-AC19-4D66-970F-1D5F1E9FE05C}.Release|x64.Build.0 = Release|Any CPU 44 | {C065E4A9-AC19-4D66-970F-1D5F1E9FE05C}.Release|x86.ActiveCfg = Release|Any CPU 45 | {C065E4A9-AC19-4D66-970F-1D5F1E9FE05C}.Release|x86.Build.0 = Release|Any CPU 46 | {F73CBB83-CF4E-40F1-AF40-E36D900A596B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 47 | {F73CBB83-CF4E-40F1-AF40-E36D900A596B}.Debug|Any CPU.Build.0 = Debug|Any CPU 48 | {F73CBB83-CF4E-40F1-AF40-E36D900A596B}.Debug|x64.ActiveCfg = Debug|Any CPU 49 | {F73CBB83-CF4E-40F1-AF40-E36D900A596B}.Debug|x64.Build.0 = Debug|Any CPU 50 | {F73CBB83-CF4E-40F1-AF40-E36D900A596B}.Debug|x86.ActiveCfg = Debug|Any CPU 51 | {F73CBB83-CF4E-40F1-AF40-E36D900A596B}.Debug|x86.Build.0 = Debug|Any CPU 52 | {F73CBB83-CF4E-40F1-AF40-E36D900A596B}.Release|Any CPU.ActiveCfg = Release|Any CPU 53 | {F73CBB83-CF4E-40F1-AF40-E36D900A596B}.Release|Any CPU.Build.0 = Release|Any CPU 54 | {F73CBB83-CF4E-40F1-AF40-E36D900A596B}.Release|x64.ActiveCfg = Release|Any CPU 55 | {F73CBB83-CF4E-40F1-AF40-E36D900A596B}.Release|x64.Build.0 = Release|Any CPU 56 | {F73CBB83-CF4E-40F1-AF40-E36D900A596B}.Release|x86.ActiveCfg = Release|Any CPU 57 | {F73CBB83-CF4E-40F1-AF40-E36D900A596B}.Release|x86.Build.0 = Release|Any CPU 58 | EndGlobalSection 59 | GlobalSection(SolutionProperties) = preSolution 60 | HideSolutionNode = FALSE 61 | EndGlobalSection 62 | EndGlobal 63 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AutoCompleteComboBox for WPF 2 | 3 | > *Announcement: This repository will soon be renamed to a shorter name.* 4 | 5 | [![NuGet version](https://badge.fury.io/nu/DotNetKit.Wpf.AutoCompleteComboBox.svg)](https://badge.fury.io/nu/DotNetKit.Wpf.AutoCompleteComboBox) 6 | 7 | A lightweight ComboBox control that supports filtering (auto completion). 8 | 9 | ## Screenshot 10 | ![](documents/images/screenshot.gif) 11 | 12 | ## Usage 13 | [Install via NuGet](https://www.nuget.org/packages/DotNetKit.Wpf.AutoCompleteComboBox). 14 | 15 | Declare XML namespace. 16 | 17 | ```xml 18 | 22 | ``` 23 | 24 | You can then use `AutoCompleteComboBox` just like a normal `ComboBox`, since it inherits from it. 25 | 26 | ```xml 27 | 34 | ``` 35 | 36 | Note that: 37 | 38 | - Set a property path to ``TextSearch.TextPath`` property. 39 | - The path should point to a property that returns a string used to identify items. For example, if each item is a `Person` object with a `Name` property, and ``TextSearch.TextPath`` is set to `"Name"`, typing `"va"` will filter out all items whose `Name` doesn't contain `"va"`. 40 | - No support for ``TextSearch.Text``. 41 | - Don't use ``ComboBox.Items`` property directly. Use `ItemsSource` instead. 42 | - Although the Demo project uses DataTemplate to display items, you can also use `DisplayMemberPath`. 43 | 44 | ### Configuration 45 | The default settings should work well for most cases, but you can customize the behavior if needed. 46 | 47 | - Define a class derived from [DotNetKit.Windows.Controls.AutoCompleteComboBoxSetting](AutoCompleteComboBoxWpf/Windows/Controls/AutoCompleteComboBoxSetting.cs) to override some of its properties. 48 | - Set the instance to ``AutoCompleteComboBox.Setting`` property. 49 | 50 | ```xml 51 | 55 | ``` 56 | 57 | - Or set ``AutoCompleteComboBoxSetting.Default`` to apply to all comboboxes. 58 | 59 | ### Performance 60 | Filtering allows you to add many items without losing usability, but it can affect performance. To improve this, we recommend using `VirtualizingStackPanel` as the items panel. 61 | 62 | Use the `ItemsPanel` property: 63 | 64 | ```csharp 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | ``` 73 | 74 | or declare a style in resources as the Demo app does. 75 | 76 | See also [WPF: Using a VirtualizingStackPanel to Improve ComboBox Performance](http://vbcity.com/blogs/xtab/archive/2009/12/15/wpf-using-a-virtualizingstackpanel-to-improve-combobox-performance.aspx) for more detailed explanation. 77 | 78 | ## Known Issues 79 | ### Shared ItemsSource 80 | - Multiple ComboBoxes can affect each other if they share the same ItemsSource instance. 81 | - Workaround: Use distinct ItemsSource instance for each AutoCompleteComboBox. For example, wrap it with a ReadOnlyCollection. 82 | 83 | ### Filter Conflict 84 | - Changing `AutoCompleteComboBox.Filter` in user code conflicts with the control's internal behavior. 85 | - Workaround: Avoid changing Filter in user code. Filter ItemsSource instead. 86 | - There seems to be no reliable way to merge CollectionView filters. Please let me know if you have a solution. 87 | 88 | ### Background Not Applied 89 | `ComboBox` doesn't appear to support the `Background` property. No easy fix is known. 90 | 91 | ## Internals 92 | This library is essentially a thin wrapper around the standard `ComboBox` with additional behaviors. 93 | 94 | ### What Happens Under the Hood 95 | - Sets `IsEditable` to true to allow text input 96 | - Finds the TextBox part (in the ComboBox) to listen to the TextChanged event 97 | - Opens or closes the dropdown when the text changes (after the debounce timer fires) 98 | - TextBox selection is carefully saved and restored to not disturb the user 99 | - Filters the ComboBox items based on the input 100 | - Handles PreviewKeyDown events (`Ctrl+Space`) to open the dropdown 101 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.gitignore.io/api/csharp 3 | 4 | ### Csharp ### 5 | ## Ignore Visual Studio temporary files, build results, and 6 | ## files generated by popular Visual Studio add-ons. 7 | ## 8 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 9 | 10 | # User-specific files 11 | *.suo 12 | *.user 13 | *.userosscache 14 | *.sln.docstates 15 | 16 | # User-specific files (MonoDevelop/Xamarin Studio) 17 | *.userprefs 18 | 19 | # Build results 20 | [Dd]ebug/ 21 | [Dd]ebugPublic/ 22 | [Rr]elease/ 23 | [Rr]eleases/ 24 | x64/ 25 | x86/ 26 | bld/ 27 | [Bb]in/ 28 | [Oo]bj/ 29 | [Ll]og/ 30 | 31 | # Visual Studio 2015/2017 cache/options directory 32 | .vs/ 33 | # Uncomment if you have tasks that create the project's static files in wwwroot 34 | #wwwroot/ 35 | 36 | # Visual Studio 2017 auto generated files 37 | Generated\ Files/ 38 | 39 | # MSTest test Results 40 | [Tt]est[Rr]esult*/ 41 | [Bb]uild[Ll]og.* 42 | 43 | # NUNIT 44 | *.VisualState.xml 45 | TestResult.xml 46 | 47 | # Build Results of an ATL Project 48 | [Dd]ebugPS/ 49 | [Rr]eleasePS/ 50 | dlldata.c 51 | 52 | # Benchmark Results 53 | BenchmarkDotNet.Artifacts/ 54 | 55 | # .NET Core 56 | project.lock.json 57 | project.fragment.lock.json 58 | artifacts/ 59 | 60 | # StyleCop 61 | StyleCopReport.xml 62 | 63 | # Files built by Visual Studio 64 | *_i.c 65 | *_p.c 66 | *_h.h 67 | *.ilk 68 | *.meta 69 | *.obj 70 | *.iobj 71 | *.pch 72 | *.pdb 73 | *.ipdb 74 | *.pgc 75 | *.pgd 76 | *.rsp 77 | *.sbr 78 | *.tlb 79 | *.tli 80 | *.tlh 81 | *.tmp 82 | *.tmp_proj 83 | *_wpftmp.csproj 84 | *.log 85 | *.vspscc 86 | *.vssscc 87 | .builds 88 | *.pidb 89 | *.svclog 90 | *.scc 91 | 92 | # Chutzpah Test files 93 | _Chutzpah* 94 | 95 | # Visual C++ cache files 96 | ipch/ 97 | *.aps 98 | *.ncb 99 | *.opendb 100 | *.opensdf 101 | *.sdf 102 | *.cachefile 103 | *.VC.db 104 | *.VC.VC.opendb 105 | 106 | # Visual Studio profiler 107 | *.psess 108 | *.vsp 109 | *.vspx 110 | *.sap 111 | 112 | # Visual Studio Trace Files 113 | *.e2e 114 | 115 | # TFS 2012 Local Workspace 116 | $tf/ 117 | 118 | # Guidance Automation Toolkit 119 | *.gpState 120 | 121 | # ReSharper is a .NET coding add-in 122 | _ReSharper*/ 123 | *.[Rr]e[Ss]harper 124 | *.DotSettings.user 125 | 126 | # JustCode is a .NET coding add-in 127 | .JustCode 128 | 129 | # TeamCity is a build add-in 130 | _TeamCity* 131 | 132 | # DotCover is a Code Coverage Tool 133 | *.dotCover 134 | 135 | # AxoCover is a Code Coverage Tool 136 | .axoCover/* 137 | !.axoCover/settings.json 138 | 139 | # Visual Studio code coverage results 140 | *.coverage 141 | *.coveragexml 142 | 143 | # NCrunch 144 | _NCrunch_* 145 | .*crunch*.local.xml 146 | nCrunchTemp_* 147 | 148 | # MightyMoose 149 | *.mm.* 150 | AutoTest.Net/ 151 | 152 | # Web workbench (sass) 153 | .sass-cache/ 154 | 155 | # Installshield output folder 156 | [Ee]xpress/ 157 | 158 | # DocProject is a documentation generator add-in 159 | DocProject/buildhelp/ 160 | DocProject/Help/*.HxT 161 | DocProject/Help/*.HxC 162 | DocProject/Help/*.hhc 163 | DocProject/Help/*.hhk 164 | DocProject/Help/*.hhp 165 | DocProject/Help/Html2 166 | DocProject/Help/html 167 | 168 | # Click-Once directory 169 | publish/ 170 | 171 | # Publish Web Output 172 | *.[Pp]ublish.xml 173 | *.azurePubxml 174 | # Note: Comment the next line if you want to checkin your web deploy settings, 175 | # but database connection strings (with potential passwords) will be unencrypted 176 | *.pubxml 177 | *.publishproj 178 | 179 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 180 | # checkin your Azure Web App publish settings, but sensitive information contained 181 | # in these scripts will be unencrypted 182 | PublishScripts/ 183 | 184 | # NuGet Packages 185 | *.nupkg 186 | # The packages folder can be ignored because of Package Restore 187 | **/[Pp]ackages/* 188 | # except build/, which is used as an MSBuild target. 189 | !**/[Pp]ackages/build/ 190 | # Uncomment if necessary however generally it will be regenerated when needed 191 | #!**/[Pp]ackages/repositories.config 192 | # NuGet v3's project.json files produces more ignorable files 193 | *.nuget.props 194 | *.nuget.targets 195 | 196 | # Microsoft Azure Build Output 197 | csx/ 198 | *.build.csdef 199 | 200 | # Microsoft Azure Emulator 201 | ecf/ 202 | rcf/ 203 | 204 | # Windows Store app package directories and files 205 | AppPackages/ 206 | BundleArtifacts/ 207 | Package.StoreAssociation.xml 208 | _pkginfo.txt 209 | *.appx 210 | 211 | # Visual Studio cache files 212 | # files ending in .cache can be ignored 213 | *.[Cc]ache 214 | # but keep track of directories ending in .cache 215 | !*.[Cc]ache/ 216 | 217 | # Others 218 | ClientBin/ 219 | ~$* 220 | *~ 221 | *.dbmdl 222 | *.dbproj.schemaview 223 | *.jfm 224 | *.pfx 225 | *.publishsettings 226 | orleans.codegen.cs 227 | 228 | # Including strong name files can present a security risk 229 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 230 | #*.snk 231 | 232 | # Since there are multiple workflows, uncomment next line to ignore bower_components 233 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 234 | #bower_components/ 235 | 236 | # RIA/Silverlight projects 237 | Generated_Code/ 238 | 239 | # Backup & report files from converting an old project file 240 | # to a newer Visual Studio version. Backup files are not needed, 241 | # because we have git ;-) 242 | _UpgradeReport_Files/ 243 | Backup*/ 244 | UpgradeLog*.XML 245 | UpgradeLog*.htm 246 | ServiceFabricBackup/ 247 | *.rptproj.bak 248 | 249 | # SQL Server files 250 | *.mdf 251 | *.ldf 252 | *.ndf 253 | 254 | # Business Intelligence projects 255 | *.rdl.data 256 | *.bim.layout 257 | *.bim_*.settings 258 | *.rptproj.rsuser 259 | 260 | # Microsoft Fakes 261 | FakesAssemblies/ 262 | 263 | # GhostDoc plugin setting file 264 | *.GhostDoc.xml 265 | 266 | # Node.js Tools for Visual Studio 267 | .ntvs_analysis.dat 268 | node_modules/ 269 | 270 | # Visual Studio 6 build log 271 | *.plg 272 | 273 | # Visual Studio 6 workspace options file 274 | *.opt 275 | 276 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 277 | *.vbw 278 | 279 | # Visual Studio LightSwitch build output 280 | **/*.HTMLClient/GeneratedArtifacts 281 | **/*.DesktopClient/GeneratedArtifacts 282 | **/*.DesktopClient/ModelManifest.xml 283 | **/*.Server/GeneratedArtifacts 284 | **/*.Server/ModelManifest.xml 285 | _Pvt_Extensions 286 | 287 | # Paket dependency manager 288 | .paket/paket.exe 289 | paket-files/ 290 | 291 | # FAKE - F# Make 292 | .fake/ 293 | 294 | # JetBrains Rider 295 | .idea/ 296 | *.sln.iml 297 | 298 | # CodeRush personal settings 299 | .cr/personal 300 | 301 | # Python Tools for Visual Studio (PTVS) 302 | __pycache__/ 303 | *.pyc 304 | 305 | # Cake - Uncomment if you are using it 306 | # tools/** 307 | # !tools/packages.config 308 | 309 | # Tabs Studio 310 | *.tss 311 | 312 | # Telerik's JustMock configuration file 313 | *.jmconfig 314 | 315 | # BizTalk build output 316 | *.btp.cs 317 | *.btm.cs 318 | *.odx.cs 319 | *.xsd.cs 320 | 321 | # OpenCover UI analysis results 322 | OpenCover/ 323 | 324 | # Azure Stream Analytics local run output 325 | ASALocalRun/ 326 | 327 | # MSBuild Binary and Structured Log 328 | *.binlog 329 | 330 | # NVidia Nsight GPU debugger configuration file 331 | *.nvuser 332 | 333 | # MFractors (Xamarin productivity tool) working folder 334 | .mfractor/ 335 | 336 | # Local History for Visual Studio 337 | .localhistory/ 338 | 339 | 340 | # End of https://www.gitignore.io/api/csharp 341 | -------------------------------------------------------------------------------- /AutoCompleteComboBoxWpf/Windows/Controls/AutoCompleteComboBox.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.ComponentModel; 5 | using System.Linq; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Controls.Primitives; 9 | using System.Windows.Data; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Threading; 13 | 14 | namespace DotNetKit.Windows.Controls 15 | { 16 | /// 17 | /// AutoCompleteComboBox.xaml 18 | /// 19 | public partial class AutoCompleteComboBox : ComboBox 20 | { 21 | TextBox editableTextBoxCache; 22 | DispatcherTimer debounceTimer; 23 | Predicate defaultItemsFilter; 24 | 25 | public TextBox EditableTextBox 26 | { 27 | get 28 | { 29 | if (editableTextBoxCache == null) 30 | { 31 | const string name = "PART_EditableTextBox"; 32 | editableTextBoxCache = (TextBox)FindDescendant(this, name); 33 | } 34 | return editableTextBoxCache; 35 | } 36 | } 37 | 38 | /// 39 | /// Gets the text used for matching against the query. 40 | /// Returns an empty string if the item is null. 41 | /// 42 | string GetItemText(object item) 43 | { 44 | if (item == null) return string.Empty; 45 | 46 | var d = new BindingEvaluator(); 47 | d.SetBinding(item, TextSearch.GetTextPath(this)); 48 | return d.Value ?? string.Empty; 49 | } 50 | 51 | protected override void OnItemsSourceChanged(IEnumerable oldValue, IEnumerable newValue) 52 | { 53 | base.OnItemsSourceChanged(oldValue, newValue); 54 | 55 | defaultItemsFilter = newValue is ICollectionView cv ? cv.Filter : null; 56 | } 57 | 58 | #region Setting 59 | static readonly DependencyProperty settingProperty = 60 | DependencyProperty.Register( 61 | "Setting", 62 | typeof(AutoCompleteComboBoxSetting), 63 | typeof(AutoCompleteComboBox) 64 | ); 65 | 66 | public static DependencyProperty SettingProperty 67 | { 68 | get { return settingProperty; } 69 | } 70 | 71 | public AutoCompleteComboBoxSetting Setting 72 | { 73 | get { return (AutoCompleteComboBoxSetting)GetValue(SettingProperty); } 74 | set { SetValue(SettingProperty, value); } 75 | } 76 | 77 | AutoCompleteComboBoxSetting SettingOrDefault 78 | { 79 | get { return Setting ?? AutoCompleteComboBoxSetting.Default; } 80 | } 81 | #endregion 82 | 83 | #region OnTextChanged 84 | string previousText; 85 | 86 | struct TextBoxStateSaver 87 | : IDisposable 88 | { 89 | readonly TextBox textBox; 90 | readonly int selectionStart; 91 | readonly int selectionLength; 92 | readonly string text; 93 | 94 | public void Dispose() 95 | { 96 | textBox.Text = text; 97 | textBox.Select(selectionStart, selectionLength); 98 | } 99 | 100 | public TextBoxStateSaver(TextBox textBox) 101 | { 102 | this.textBox = textBox; 103 | selectionStart = textBox.SelectionStart; 104 | selectionLength = textBox.SelectionLength; 105 | text = textBox.Text; 106 | } 107 | } 108 | 109 | static int CountUpTo(IEnumerable xs, Predicate predicate, int maxCount) 110 | { 111 | var count = 0; 112 | foreach (var x in xs) 113 | { 114 | if (predicate(x)) 115 | { 116 | count++; 117 | if (count > maxCount) return count; 118 | } 119 | } 120 | return count; 121 | } 122 | 123 | void UpdateFilter() 124 | { 125 | var filter = GetFilter(); 126 | var textBox = EditableTextBox; 127 | 128 | // Setting Items.Filter can sometimes clear the TextBox unexpectedly. 129 | // The preserver is used as a workaround. 130 | using (new TextBoxStateSaver(textBox)) 131 | using (Items.DeferRefresh()) 132 | { 133 | Items.Filter = filter; 134 | } 135 | 136 | // Deselect the text. 137 | textBox.Select(textBox.SelectionStart + textBox.SelectionLength, 0); 138 | } 139 | 140 | void UpdateSuggestionList(bool controlOpen) 141 | { 142 | var text = Text; 143 | 144 | if (text == previousText) return; 145 | previousText = text; 146 | 147 | if (string.IsNullOrEmpty(text)) 148 | { 149 | if (controlOpen) 150 | { 151 | IsDropDownOpen = false; 152 | } 153 | 154 | SelectedItem = null; 155 | 156 | using (Items.DeferRefresh()) 157 | { 158 | Items.Filter = defaultItemsFilter; 159 | } 160 | } 161 | else if (SelectedItem != null && GetItemText(SelectedItem) == text) 162 | { 163 | // Some item is selected and therefore text is set. Keep the current filter. 164 | return; 165 | } 166 | else 167 | { 168 | using (new TextBoxStateSaver(EditableTextBox)) 169 | { 170 | SelectedItem = null; 171 | } 172 | 173 | UpdateFilter(); 174 | 175 | // Automatically opens the dropdown when the number of filtered items is within the allowed range. 176 | if (controlOpen && !IsDropDownOpen && IsKeyboardFocusWithin) 177 | { 178 | var filter = GetFilter(); 179 | var maxCount = SettingOrDefault.MaxSuggestionCount; 180 | var count = CountUpTo(ItemsSource?.Cast() ?? Enumerable.Empty(), filter, maxCount); 181 | 182 | if (0 < count && count <= maxCount) 183 | { 184 | IsDropDownOpen = true; 185 | } 186 | } 187 | } 188 | } 189 | 190 | void OnTextChanged(object sender, TextChangedEventArgs e) 191 | { 192 | var setting = SettingOrDefault; 193 | 194 | if (setting.Delay <= TimeSpan.Zero) 195 | { 196 | UpdateSuggestionList(controlOpen: true); 197 | return; 198 | } 199 | 200 | // Wait for delay (debounce pattern.) 201 | if (debounceTimer != null) 202 | { 203 | debounceTimer.Stop(); 204 | } 205 | var onTick = new EventHandler((_sender, _e) => 206 | { 207 | debounceTimer.Stop(); 208 | debounceTimer = null; 209 | UpdateSuggestionList(controlOpen: true); 210 | }); 211 | debounceTimer = new DispatcherTimer(setting.Delay, DispatcherPriority.Normal, onTick, Dispatcher); 212 | debounceTimer.Start(); 213 | } 214 | #endregion 215 | 216 | protected override void OnDropDownOpened(EventArgs e) 217 | { 218 | base.OnDropDownOpened(e); 219 | 220 | // Update filter immediately. 221 | if (debounceTimer != null) 222 | { 223 | debounceTimer.Stop(); 224 | debounceTimer = null; 225 | } 226 | 227 | UpdateSuggestionList(controlOpen: false); 228 | 229 | // The text becomes fully selected when the dropdown opens; deselect it. 230 | var textBox = EditableTextBox; 231 | textBox.Select(textBox.SelectionStart + textBox.SelectionLength, 0); 232 | } 233 | 234 | void ComboBox_PreviewKeyDown(object sender, KeyEventArgs e) 235 | { 236 | // Ctrl+Space 237 | if (Keyboard.Modifiers.HasFlag(ModifierKeys.Control) && e.Key == Key.Space) 238 | { 239 | e.Handled = true; 240 | IsDropDownOpen = true; 241 | } 242 | } 243 | 244 | Predicate GetFilter() 245 | { 246 | var filter = SettingOrDefault.GetFilter(Text ?? "", GetItemText); 247 | 248 | return defaultItemsFilter != null 249 | ? i => defaultItemsFilter(i) && filter(i) 250 | : filter; 251 | } 252 | 253 | public AutoCompleteComboBox() 254 | { 255 | InitializeComponent(); 256 | 257 | AddHandler(TextBoxBase.TextChangedEvent, new TextChangedEventHandler(OnTextChanged)); 258 | } 259 | 260 | // Helpers 261 | 262 | #region BindingEvaluator 263 | sealed class BindingEvaluator : DependencyObject 264 | { 265 | public static readonly DependencyProperty ValueProperty = 266 | DependencyProperty.Register("Value", typeof(T), typeof(BindingEvaluator)); 267 | 268 | public T Value 269 | { 270 | get { return (T)GetValue(ValueProperty); } 271 | set { SetValue(ValueProperty, value); } 272 | } 273 | 274 | public void SetBinding(Binding binding) 275 | { 276 | BindingOperations.SetBinding(this, ValueProperty, binding); 277 | } 278 | 279 | public void SetBinding(object dataContext, string propertyPath) 280 | { 281 | SetBinding(new Binding(propertyPath) { Source = dataContext }); 282 | } 283 | } 284 | #endregion 285 | 286 | #region FindDescendant 287 | static FrameworkElement FindDescendant(DependencyObject obj, string childName) 288 | { 289 | if (obj == null) return null; 290 | 291 | var queue = new Queue(); 292 | queue.Enqueue(obj); 293 | 294 | while (queue.Count > 0) 295 | { 296 | obj = queue.Dequeue(); 297 | 298 | var childCount = VisualTreeHelper.GetChildrenCount(obj); 299 | for (var i = 0; i < childCount; i++) 300 | { 301 | var child = VisualTreeHelper.GetChild(obj, i); 302 | 303 | var fe = child as FrameworkElement; 304 | if (fe != null && fe.Name == childName) 305 | { 306 | return fe; 307 | } 308 | 309 | queue.Enqueue(child); 310 | } 311 | } 312 | 313 | return null; 314 | } 315 | #endregion 316 | } 317 | } -------------------------------------------------------------------------------- /Demo/Data/Person.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Demo.Data 8 | { 9 | public sealed class Person 10 | { 11 | public long Id { get; private set; } 12 | public string Name { get; private set; } 13 | 14 | public override string ToString() 15 | { 16 | return string.Format("Person(Id = {0}, Name = {1})", Id, Name); 17 | } 18 | 19 | public Person(long id, string name) 20 | { 21 | Id = id; 22 | Name = name; 23 | } 24 | } 25 | 26 | public static class PersonModule 27 | { 28 | /// 29 | /// List of name automatically generated by http://listofrandomnames.com . Thanks! 30 | /// 31 | static readonly string source = 32 | @" 33 | Aaron Custodio 34 | Abbey Leinen 35 | Abe Poythress 36 | Abraham Cephus 37 | Ada Neilsen 38 | Adan Vann 39 | Adelaida Delia 40 | Adelia Kornegay 41 | Adena Boldt 42 | Adina Santibanez 43 | Adolfo Loesch 44 | Adrianne Bourbon 45 | Afton Shook 46 | Afton Yung 47 | Agustin Burghardt 48 | Ahmed File 49 | Aida Mattix 50 | Aide Hymel 51 | Ailene Hou 52 | Ailene Mullinax 53 | Aisha Merrigan 54 | Akilah Carreira 55 | Akilah Dearmond 56 | Al Gans 57 | Alanna Cloninger 58 | Alanna Sproull 59 | Albert Prunty 60 | Albert Verhoeven 61 | Alberta Hidalgo 62 | Albertine Kinsman 63 | Alberto Guilford 64 | Alden Bartz 65 | Alden Hendrick 66 | Alecia Molinar 67 | Aleisha Stoops 68 | Alejandrina Kaminsky 69 | Aleta Yother 70 | Alethea Kessinger 71 | Alex Tooker 72 | Alexander Mazzarella 73 | Alexandra Coan 74 | Alexandra Nees 75 | Alfonso Garlick 76 | Alfonso Reber 77 | Alfonzo Meritt 78 | Alfred Daniel 79 | Alfred Hora 80 | Alice Plumer 81 | Aline Willits 82 | Alisa Rocca 83 | Aliza Waldschmidt 84 | Allen Cuyler 85 | Allie Farrow 86 | Allyn Henderson 87 | Almeda Eck 88 | Almeta Mahmood 89 | Alona Jamerson 90 | Alphonse Cayetano 91 | Alvina Atkin 92 | Alvina Hoag 93 | Alvina Sawicki 94 | Alyce Kangas 95 | Alysha Romans 96 | Amado Weir 97 | Amanda Star 98 | Amberly Guinyard 99 | Ambrose Grisson 100 | Amy Jimenes 101 | Anabel Bernardo 102 | Anabel Boissonneault 103 | Anastasia Algarin 104 | Andera Koll 105 | Andre Mccullum 106 | Andreas Mair 107 | Andreas Shiba 108 | Andree Delany 109 | Angela Walder 110 | Angelina Masden 111 | Angelo Berberich 112 | Anibal Bass 113 | Anibal Stratman 114 | Anisa Gu 115 | Anisha Dimauro 116 | Anitra Yap 117 | Anjanette Mcwhirter 118 | Anna Stefanik 119 | Annabell Dingus 120 | Annabelle Bail 121 | Annalee Heise 122 | Anneliese Hammaker 123 | Annette Burkes 124 | Anthony Platero 125 | Antoine Rivenbark 126 | Antoinette Short 127 | Antone Jehle 128 | Antone Kepler 129 | Antone Shillings 130 | April Mcconnaughy 131 | Apryl Bolten 132 | Ara Sweeting 133 | Aracelis Crompton 134 | Aracelis Heinrich 135 | Aracelis Shrum 136 | Ardelia Fredrickson 137 | Ardelia Kummer 138 | Ardelle Blakney 139 | Arden Han 140 | Arianna Lipsett 141 | Ariel Cerrato 142 | Ariel Obryan 143 | Arlen Knighten 144 | Arlen Lowe 145 | Arletta Duenas 146 | Arletta Lykins 147 | Arlette Duropan 148 | Armand Thorpe 149 | Armando Gallien 150 | Armando Scheidegger 151 | Arminda Gardella 152 | Arnold Altamirano 153 | Arnulfo Aikens 154 | Arnulfo Polley 155 | Arnulfo Weesner 156 | Aron Plaza 157 | Arron Finger 158 | Art Grise 159 | Artie Caviness 160 | Arturo Tomberlin 161 | Ashanti Hannah 162 | Ashely Crowner 163 | Ashlea Summy 164 | Astrid Cissell 165 | Aubrey Oldaker 166 | Audrie Brite 167 | Augustina Hernandes 168 | Augustine Padron 169 | Augustine Tosi 170 | Aundrea Guss 171 | Aura Buie 172 | Aurelio Greaney 173 | Avelina Bremer 174 | Avery Morino 175 | Avery Woodmansee 176 | Ayesha Eisenhower 177 | Azzie Rubio 178 | Babette Winkelman 179 | Bao Murrin 180 | Barbara Vandergriff 181 | Barney Purtee 182 | Barrett Parsons 183 | Barry Douville 184 | Bart Lovin 185 | Bart Reiling 186 | Bart Santiago 187 | Basil Scruton 188 | Beau Iriarte 189 | Beau Laguerre 190 | Beau Overlock 191 | Becky Berthelot 192 | Ben Kyzer 193 | Benedict Kreiner 194 | Bennie Wisneski 195 | Benny Glynn 196 | Benny Neuhaus 197 | Benton Hibbert 198 | Benton Montanez 199 | Bernarda Thibeaux 200 | Bernardo Milardo 201 | Bernice Effinger 202 | Berry Bently 203 | Berta Carlisle 204 | Bertha Hogsett 205 | Bertie Gathers 206 | Bertie Mendonca 207 | Bethanie Whitman 208 | Beverley Kierstead 209 | Beverly Steptoe 210 | Bianca Giusti 211 | Bibi Rother 212 | Bibi Wigfall 213 | Billy Koerber 214 | Billy Wellington 215 | Birdie Flavell 216 | Blaine Phou 217 | Blanche Constance 218 | Blondell Dillman 219 | Blossom Dengler 220 | Bo Hobby 221 | Bob Strader 222 | Bobbye Keithley 223 | Bonny Rieth 224 | Boris Hesser 225 | Boyce Battle 226 | Boyd Granada 227 | Bradly Burtner 228 | Bradly Knaub 229 | Bradly Makin 230 | Branda Marr 231 | Branden Threadgill 232 | Brandon Valladares 233 | Brendon Malbon 234 | Brenton Hawbaker 235 | Bret Phegley 236 | Briana Tran 237 | Bridget Hobby 238 | Bridgett Kinghorn 239 | Brigida Yang 240 | Brigitte Griffing 241 | Brigitte Masser 242 | Britany Hayne 243 | Britney Cosey 244 | Britni Charles 245 | Brittani Burfield 246 | Brittani Cronan 247 | Brittanie Yung 248 | Brittny Gravelle 249 | Brock Bessette 250 | Bruce Stenzel 251 | Bruna Crail 252 | Brunilda Lemon 253 | Bryanna Tallon 254 | Bryce Reuss 255 | Bryon Shoaf 256 | Buena Edmundson 257 | Burl Gilroy 258 | Burl Revis 259 | Burt Demasi 260 | Burt Hopkins 261 | Caitlyn Hom 262 | Calandra Heppner 263 | Calvin Dupuy 264 | Camellia Mattingly 265 | Cameron Hillery 266 | Cameron Pilger 267 | Cameron Romriell 268 | Camie Gahan 269 | Candis Bartell 270 | Candra Dolly 271 | Caren Stocker 272 | Cari Holston 273 | Caridad Crooker 274 | Carie Quaid 275 | Carl Schulenberg 276 | Carley Shelman 277 | Carline Alleman 278 | Carlo Pech 279 | Carlota Coulter 280 | Carlotta Carlow 281 | Carlton Bermejo 282 | Carma Shires 283 | Carman Sabado 284 | Carmelita Goslin 285 | Carmelo Lamay 286 | Carmine Senn 287 | Carmon Kauffman 288 | Carmon Sundquist 289 | Carola Xie 290 | Carolyn Tarrant 291 | Carolyn Valadez 292 | Caroyln Ricardo 293 | Carroll Mcelrath 294 | Carry Crochet 295 | Carylon Walczak 296 | Caryn Mumaw 297 | Casandra Berube 298 | Casie Rohrer 299 | Cassandra Virgen 300 | Cassey Embree 301 | Cassondra Escamilla 302 | Catalina Sigmon 303 | Catherine Lindell 304 | Cathern Sonnenberg 305 | Cathie Juan 306 | Cathleen Gaccione 307 | Cathy Fabrizio 308 | Cathy Negrin 309 | Cedric Tschanz 310 | Cedrick Sautner 311 | Celia Tinney 312 | Celsa Mowery 313 | Ceola Goodpaster 314 | Cesar Cosner 315 | Chad Ahmed 316 | Chad Arriaga 317 | Chadwick Crader 318 | Chance Jamar 319 | Chance Knoll 320 | Chanelle Rizo 321 | Chantal Fortuna 322 | Charleen Fullwood 323 | Charlie Hillwig 324 | Chase Dalzell 325 | Chase Schade 326 | Chasidy Beaudette 327 | Chasidy Jaycox 328 | Chastity Bramlett 329 | Cherilyn Jarosz 330 | Cherly Dustin 331 | Cherlyn Mcfadden 332 | Cherrie Schisler 333 | Cheryle Uvalle 334 | Chester Mcginn 335 | Chet Barbosa 336 | Chet Downing 337 | Chet Findlay 338 | Chet Geraci 339 | Chet Habel 340 | Chet Mondor 341 | Chi Sao 342 | Chiquita Flaugher 343 | Chong Starks 344 | Chong Valente 345 | Christen Lamorte 346 | Christi Clodfelter 347 | Christi Leitzel 348 | Christian Grunewald 349 | Christoper Mcnary 350 | Christoper Shattles 351 | Christy Boyster 352 | Christy Dombrowski 353 | Chuck Branton 354 | Cicely Ort 355 | Cinderella Dollar 356 | Cindy Rutt 357 | Cindy Ullrich 358 | Cira Nourse 359 | Clair Mcmurray 360 | Clair Pilger 361 | Clara Legree 362 | Clare Halverson 363 | Clarence Heacock 364 | Clarence Napoleon 365 | Claretha Toenjes 366 | Claretta Rist 367 | Clarice Marchi 368 | Clarinda Zehnder 369 | Claris Froman 370 | Clarisa Wisecarver 371 | Clark Handel 372 | Clark Yutzy 373 | Claud Graves 374 | Claudio Stallworth 375 | Clay Browne 376 | Clement Whelan 377 | Clemente Fanning 378 | Clemente Isom 379 | Cleveland Donnell 380 | Cliff Martelli 381 | Clifford Agosto 382 | Clifford Hucks 383 | Clint Moriarity 384 | Clint Morison 385 | Clinton Carbone 386 | Clinton Glorioso 387 | Clinton Pangburn 388 | Clora Wu 389 | Clorinda Laboy 390 | Codi Litherland 391 | Cody Crowell 392 | Cody Railey 393 | Colby Boyle 394 | Coletta Narron 395 | Colton Driskill 396 | Colton Romriell 397 | Connie Deltoro 398 | Connie Gardener 399 | Cora Dobles 400 | Cora Lawalin 401 | Cordelia Stalder 402 | Corey Obryan 403 | Corie Wentz 404 | Corinne Yager 405 | Corliss Hebel 406 | Cornelius Sarmiento 407 | Cornell Simoes 408 | Corrie Dowden 409 | Cortez Sturdivant 410 | Cortney Linney 411 | Cory Imes 412 | Courtney Mahmoud 413 | Courtney Priester 414 | Courtney Spahn 415 | Coy Amado 416 | Craig Ellsworth 417 | Craig Valazquez 418 | Creola Dantzler 419 | Crista Igo 420 | Cristi Longley 421 | Cristie Scarpelli 422 | Cristine Papke 423 | Cristopher Scaife 424 | Cristy Lalor 425 | Curt Allmon 426 | Cyrus Pettiford 427 | Daine Schaller 428 | Daisey Skoglund 429 | Daisey Zwiebel 430 | Dale Marlatt 431 | Damaris Tubbs 432 | Damon Burda 433 | Dan Filler 434 | Dana Mayson 435 | Dana Minelli 436 | Dani Brian 437 | Dani Hatton 438 | Danica Shaw 439 | Daniela Cancel 440 | Danika Prahl 441 | Danilo Ruffin 442 | Dannie Furniss 443 | Dante Gaulke 444 | Danuta Ricketson 445 | Danyel Webster 446 | Danyell Urbanek 447 | Darby Liggins 448 | Daren Newberg 449 | Dario Vanwinkle 450 | Darla Weingarten 451 | Darrell Lema 452 | Darrell Ludwick 453 | Darrin Buesing 454 | Darrin Rossell 455 | Darryl Meachum 456 | Darwin Nevins 457 | Dave Mcquade 458 | David Golder 459 | David Slovak 460 | Dawn Mescher 461 | Dawna Kinkel 462 | Dawne Huie 463 | Dayle Hulett 464 | Deangelo Hungerford 465 | Debbi Lung 466 | Debbra Cheney 467 | Debby Briese 468 | Debrah Sarinana 469 | Debroah Milstead 470 | Dede Sauer 471 | Dee Kates 472 | Deeanna Attaway 473 | Deena Ake 474 | Deidre Burget 475 | Delbert Luque 476 | Delfina Trueblood 477 | Delia Sharma 478 | Delicia Dinwiddie 479 | Delicia Dunaway 480 | Deloise Kolbe 481 | Deloras Kruger 482 | Demarcus Medlock 483 | Dena Keebler 484 | Denese Gressett 485 | Denese Lenderman 486 | Denise Mouzon 487 | Denisse Naab 488 | Dennis Solorio 489 | Dennise Mattinson 490 | Denver Shover 491 | Denver Vanderzee 492 | Deonna Wetherington 493 | Derrick Bosket 494 | Derrick Randel 495 | Deshawn Elam 496 | Deshawn Tibbles 497 | Desirae Hellard 498 | Desire Magoon 499 | Desmond Boyko 500 | Devin Carballo 501 | Devon Nawrocki 502 | Devora Buchholz 503 | Devorah Gowers 504 | Dewayne Araki 505 | Dewitt Kinser 506 | Dia Purtell 507 | Diane Graziano 508 | Diane Nielson 509 | Diann Hensler 510 | Dick Seder 511 | Diedra Blakes 512 | Diedra Sheehan 513 | Diego Blizzard 514 | Digna Folkers 515 | Dionna Crigler 516 | Dirk Early 517 | Dolly Tomczak 518 | Doloris Gassner 519 | Doloris Mcbath 520 | Domenic Asper 521 | Dominga Deschenes 522 | Dominick Chaffee 523 | Dominick Justiniano 524 | Dominique Pires 525 | Dominque Mitra 526 | Don Grange 527 | Dong Bunn 528 | Dong Hearn 529 | Donita Coronado 530 | Donn Kehr 531 | Donny Viau 532 | Dorian Rehbein 533 | Dorothy Kinchen 534 | Doug Turvey 535 | Douglas Brunner 536 | Douglas Schrum 537 | Douglas Stockdale 538 | Doyle Tucci 539 | Dreama Ardon 540 | Dreama Rickert 541 | Drusilla Diebold 542 | Dulce Adrian 543 | Duncan Lubin 544 | Dung Sidwell 545 | Dwayne Casseus 546 | Dwayne Hovis 547 | Dwight Tracey 548 | Dylan Newhouse 549 | Earle Burley 550 | Earle Klatt 551 | Earle Kuhns 552 | Earlean Wolf 553 | Earlene Corriveau 554 | Earlene Mesta 555 | Earlie Even 556 | Eartha Modlin 557 | Ebonie Yzaguirre 558 | Eda Starbird 559 | Eddie Doman 560 | Eddie Yokoyama 561 | Edelmira Tabor 562 | Edgar Hudon 563 | Edgardo Cosner 564 | Edith Reuther 565 | Edmond Lamberson 566 | Edmond Mejia 567 | Edmundo Trumbauer 568 | Edra Billing 569 | Edra Tulley 570 | Edward Brann 571 | Edwardo Kimler 572 | Edwina Riera 573 | Efrain Nutter 574 | Eileen Korando 575 | Eilene Albee 576 | Ela Packard 577 | Ela Prosser 578 | Eladia Balbuena 579 | Elane Hannon 580 | Eldon Blanck 581 | Eldridge Fails 582 | Elease Outman 583 | Elenore Lovett 584 | Eleonor Flynn 585 | Eleonor Knell 586 | Eleonora Vanguilder 587 | Elfriede Sandage 588 | Eli Leeson 589 | Eli Pavone 590 | Elia Isler 591 | Elias Berthold 592 | Elias Kammer 593 | Elida Eads 594 | Elijah Mcmullan 595 | Elise Millis 596 | Eliseo Ehrenberg 597 | Elisha Amato 598 | Ellen Champagne 599 | Ellie Cassara 600 | Elliot Aichele 601 | Elliot Artis 602 | Elliott Mcgavock 603 | Ellsworth Thaler 604 | Elmer Hillard 605 | Elmira Frisk 606 | Elmo Fogg 607 | Elna Caple 608 | Elodia Guidi 609 | Elodia Rulison 610 | Eloise Cratty 611 | Eloy Lecuyer 612 | Eloy Mayweather 613 | Elroy Jamison 614 | Elsy Croke 615 | Elvis Gallivan 616 | Elwanda Mike 617 | Elwood Benedict 618 | Emiko Green 619 | Emil Sholes 620 | Emilie Alm 621 | Emmanuel Tetrault 622 | Emmanuel Town 623 | Emmett Tarpey 624 | Emmitt Mccormack 625 | Emory Northrop 626 | Enoch Grounds 627 | Enrique Demma 628 | Erasmo Birdsall 629 | Erasmo Dee 630 | Eric Pompei 631 | Erica Gravitt 632 | Erich Shive 633 | Erick Breedlove 634 | Erick Derrick 635 | Erinn Brandis 636 | Erinn Cliff 637 | Erlinda Donnelly 638 | Ernest Mikelson 639 | Ernestine Dorsey 640 | Ernesto Abston 641 | Ernesto Calhoun 642 | Errol Rosenbalm 643 | Erwin Mau 644 | Eryn Buzzell 645 | Esmeralda Shaikh 646 | Esperanza Vallee 647 | Esteban Burger 648 | Esteban Cotta 649 | Estella Reta 650 | Etha Reuther 651 | Ethan Katz 652 | Ethelyn Gamino 653 | Etsuko Littles 654 | Eugene Maddocks 655 | Eugenia Longworth 656 | Eugenio Moody 657 | Eulah Alarcon 658 | Eulalia Hesson 659 | Eun Tozier 660 | Euna Fredricks 661 | Eva Foust 662 | Eva Hummer 663 | Evalyn Lander 664 | Evan Jeanbart 665 | Evelyn Beamon 666 | Everette Waybright 667 | Evita Atkins 668 | Evonne Keever 669 | Faustino Aiken 670 | Faustino Westra 671 | Federico Loveland 672 | Felice Kinsel 673 | Felicita Shulman 674 | Felipe Otter 675 | Felisa Ingenito 676 | Felix Tunney 677 | Fermin Oviatt 678 | Fern Kubala 679 | Fernanda Buhl 680 | Fidel Barnhouse 681 | Fidelia Sifuentes 682 | Filiberto Castiglione 683 | Filiberto Fifield 684 | Fiona Joyner 685 | Fiona Mckinny 686 | Fiona Patman 687 | Fleta Mcguinness 688 | Fletcher Dant 689 | Flora Massey 690 | Florence Berryman 691 | Florencio Huey 692 | Forest Gulotta 693 | Forest Voit 694 | Forrest Pentz 695 | Francene Satterlee 696 | Frances Brogan 697 | Frances Fucci 698 | Franchesca Beachum 699 | Francina Croce 700 | Frank Feliciano 701 | Frank Mogensen 702 | Frankie Kleis 703 | Franklyn Aguas 704 | Fredda Kinloch 705 | Freddie Malatesta 706 | Freddy Hornback 707 | Frederick Wixom 708 | Fredrick Hindman 709 | Fredrick Stinson 710 | Freeman Fiorini 711 | Freeman Smiley 712 | Fritz Biffle 713 | Gabriel Baur 714 | Gabriel Snoddy 715 | Gail Elsen 716 | Gail Nader 717 | Gail Sickels 718 | Galina Brashears 719 | Garnett Hedge 720 | Garnett Hilden 721 | Garret Mcgrane 722 | Garret Merrick 723 | Garrett Cleek 724 | Garth Almaguer 725 | Gayle Davey 726 | Gaylord Michalak 727 | Gaylord Teitelbaum 728 | Gaynell Broady 729 | Gearldine Sun 730 | Gema Mah 731 | Gene Compos 732 | Geoffrey Mcclusky 733 | Georgeanna Mcmillian 734 | Georgetta Stringfield 735 | Georgette Kiley 736 | Georgianna Sisson 737 | Georgianne Kendra 738 | Gerald Takacs 739 | Gerard Reaper 740 | Gerardo Aguas 741 | Gerardo Milo 742 | Geri Fussell 743 | Geri Verge 744 | German Heckman 745 | German Schley 746 | Gerri Wigfall 747 | Gerri Yadao 748 | Gertrud Beckel 749 | Gertrudis Chausse 750 | Gertude Bedsole 751 | Gertude Sickler 752 | Gidget Crook 753 | Gilbert Rapoza 754 | Gilberto Buhr 755 | Gilberto Esquer 756 | Gillian Pinkston 757 | Ginette Claypoole 758 | Gino Heywood 759 | Giovanna Spruell 760 | Giovanni Maltby 761 | Giuseppe Harkness 762 | Gladis Gillett 763 | Glady Manry 764 | Glen Kimzey 765 | Glenda Foy 766 | Glenna Kaestner 767 | Glennie Markow 768 | Glennis Novello 769 | Glinda Kluck 770 | Glory Fagan 771 | Glynda Sidener 772 | Gracia Lorentz 773 | Grady Heng 774 | Grady Tunison 775 | Graig Fulford 776 | Graig Majka 777 | Grant Greenly 778 | Greg Viau 779 | Gregorio Geoghegan 780 | Gregory Karst 781 | Greta Peacock 782 | Gretta Saito 783 | Gricelda Danek 784 | Gricelda Kluth 785 | Grover Corning 786 | Grover Crampton 787 | Guadalupe Mar 788 | Guadalupe Petteway 789 | Guillermina Kaye 790 | Guillermo Daigle 791 | Gus Borgman 792 | Gustavo Vittetoe 793 | Gwyneth Moos 794 | Hai Gebhardt 795 | Hai Pike 796 | Halley Hintze 797 | Hana Griffy 798 | Hang An 799 | Hank Gladfelter 800 | Hanna Bohrer 801 | Hanna Norden 802 | Hannah Kos 803 | Harlan Beattie 804 | Harland Guadalupe 805 | Harland Torgerson 806 | Harley Burruss 807 | Harold Liggins 808 | Harold Tessman 809 | Harris Chewning 810 | Harrison Akridge 811 | Harrison Bohnert 812 | Harvey Germaine 813 | Hassie Dorner 814 | Hattie Liberatore 815 | Haywood Abe 816 | Haywood Prewitt 817 | Haywood Robins 818 | Heath Barker 819 | Heath Schroer 820 | Hector Berenbaum 821 | Hedwig Penfield 822 | Hedy Olivero 823 | Heidy Hayden 824 | Heidy Leiker 825 | Heike Milano 826 | Henrietta Gillispie 827 | Herminia Royal 828 | Hertha Leis 829 | Hilaria Wallace 830 | Hilario Secord 831 | Hilton Gloster 832 | Hiram Piscopo 833 | Hiroko Larger 834 | Hisako Plowman 835 | Hobert Brownson 836 | Holley Trimarchi 837 | Holli Tea 838 | Hollis Keefe 839 | Hong Bolton 840 | Horace Damico 841 | Horacio Delfino 842 | Horacio Mapp 843 | Hosea Richard 844 | Hoyt Auger 845 | Huey Spinelli 846 | Hugh Slape 847 | Hugo Archambeault 848 | Hui Heatley 849 | Hulda Mcgarity 850 | Humberto Meinecke 851 | Hung Berning 852 | Hung Mabry 853 | Huong Hagens 854 | Huong Karst 855 | Hye Freed 856 | Hyo Dicicco 857 | Idell Shambaugh 858 | Ike Coburn 859 | Ilana Swanson 860 | Ilene Rochford 861 | Ilona Franz 862 | Ilse Ginder 863 | Imogene Warlick 864 | India Yocom 865 | Ines Maldanado 866 | Iola Palm 867 | Irvin Racicot 868 | Isa Kerwin 869 | Isadora Nocera 870 | Isadora Vanbuskirk 871 | Isaias Neale 872 | Isiah Branch 873 | Isiah Foskey 874 | Israel Morey 875 | Isreal Fredenburg 876 | Isreal Malec 877 | Isreal Zollars 878 | Issac Piro 879 | Ivette Bristol 880 | Ivory Ayer 881 | Ivory Mcmenamin 882 | Jacelyn Bizzell 883 | Jacelyn Schrick 884 | Jack Niemiec 885 | Jackie Line 886 | Jacklyn Locicero 887 | Jackson Fewell 888 | Jaclyn Corrado 889 | Jaclyn Matchett 890 | Jacqualine Lehrer 891 | Jacquelin Ivory 892 | Jacquelyne Sward 893 | Jacquelynn Bargo 894 | Jacques Follis 895 | Jacques Powley 896 | Jacquetta Steedley 897 | Jacqulyn Shoffner 898 | Jaime Ishibashi 899 | Jalisa Beltz 900 | Jame Cochran 901 | Jamel Sedillo 902 | Jamey Broaddus 903 | Jamey Sun 904 | Jamika Brigham 905 | Jamila Wisecup 906 | Jamison Ooten 907 | Jamison Wiltz 908 | Jana Arbuckle 909 | Jane Statler 910 | Janean Doud 911 | Janel Eury 912 | Janell Jeremiah 913 | Janella Milian 914 | Janelle Jordison 915 | Janetta Cyr 916 | Janette Fanelli 917 | Janice Gonce 918 | Janice Hidalgo 919 | Janice Lyttle 920 | Janie Coldiron 921 | Janiece Degenhardt 922 | Janiece Pereyra 923 | Janise Girardin 924 | Janise Hyden 925 | January Rance 926 | Jared Hatchett 927 | Jared Sellman 928 | Jared Vogel 929 | Jarred Scholl 930 | Jarrett Outland 931 | Jarvis Bush 932 | Jarvis Hammes 933 | Jarvis Sherry 934 | Jason Hix 935 | Jasper Alequin 936 | Jasper Hanlon 937 | Jaunita Crume 938 | Jay Moran 939 | Jaye Hickle 940 | Jc Ascher 941 | Jean Argo 942 | Jean Marchal 943 | Jean Stang 944 | Jeanette Gravley 945 | Jeanne Fortenberry 946 | Jeannetta Creager 947 | Jeannette Heyne 948 | Jeannine Gertsch 949 | Jed Fuhrman 950 | Jefferson Coppin 951 | Jefferson Summey 952 | Jeffery Borchert 953 | Jeffrey Mccoin 954 | Jenae Cada 955 | Jenae Vanderploeg 956 | Jeni Reece 957 | Jenise Catt 958 | Jennefer Mantooth 959 | Jenni Swart 960 | Jeramy Peterka 961 | Jeremiah Giardina 962 | Jeremiah Koster 963 | Jeremiah Niemi 964 | Jerold Sciacca 965 | Jerome Wene 966 | Jeromy Chirico 967 | Jerri Volz 968 | Jerrold Falls 969 | Jerrold Hooten 970 | Jerrold Risner 971 | Jessie Salvas 972 | Jessie Threet 973 | Jesus Langlinais 974 | Jettie Henline 975 | Jewel Ronan 976 | Ji Irwin 977 | Jim Ley 978 | Jimmie Milici 979 | Jimmie Romain 980 | Jimmy Oney 981 | Jin Lindner 982 | Joan Claytor 983 | Joana Paez 984 | Joann Chaffee 985 | Joanne Penick 986 | Jocelyn Selman 987 | Joel Michalak 988 | Joel Peiffer 989 | Joellen Blanc 990 | Joesph Kutz 991 | Joesph Marble 992 | Joey Geter 993 | John Woodman 994 | Johnathan Gossman 995 | Johnathan Wiemann 996 | Johnathon Harshman 997 | Johnathon Ivester 998 | Johnie Cogley 999 | Johnnie Bunkley 1000 | Johnnie Sabala 1001 | Jon Flake 1002 | Jona Fiscus 1003 | Jona Vester 1004 | Jonas Winchell 1005 | Jonell Brighton 1006 | Joni Teague 1007 | Jonnie Lemasters 1008 | Jorge Sinkler 1009 | Jose Allender 1010 | Josef Bristow 1011 | Josef Hibbs 1012 | Joseph Fulford 1013 | Jospeh Backhaus 1014 | Jospeh Sibley 1015 | Jovita Stenzel 1016 | Joy Lor 1017 | Joy Moos 1018 | Joya Riggenbach 1019 | Juan Hassel 1020 | Juan Setzer 1021 | Jude Sizer 1022 | Jule Casperson 1023 | Julee Newbern 1024 | Julene Booze 1025 | Juli Esteban 1026 | Juli Gingras 1027 | Julian Gaskins 1028 | Julian Lowther 1029 | Juliana Zingaro 1030 | Juliane Sprowl 1031 | Julie Heinen 1032 | Julio Keltz 1033 | Julissa Loney 1034 | Julius Dejulio 1035 | June Bizzell 1036 | Justin Short 1037 | Justine Mahle 1038 | Kaci Froehlich 1039 | Kaci Umland 1040 | Kacie Lumb 1041 | Kacie Ralls 1042 | Kaila Geis 1043 | Kaitlin Saur 1044 | Kaitlin Sizemore 1045 | Kala Atherton 1046 | Kala Triggs 1047 | Kali Wojciechowski 1048 | Kalyn Skyles 1049 | Kam Percy 1050 | Kami Huggard 1051 | Kamilah Straight 1052 | Kandace Mcquade 1053 | Kandace Melgoza 1054 | Kandra Varga 1055 | Kara Runions 1056 | Karan Baum 1057 | Kareem Summey 1058 | Karen Nicklas 1059 | Karen Pier 1060 | Karine Darst 1061 | Karine Studebaker 1062 | Karma Shaddix 1063 | Karole Benevides 1064 | Karoline Dooling 1065 | Karry Roan 1066 | Kary Twitchell 1067 | Karyn Lebeau 1068 | Kassandra Matter 1069 | Katelin Rodriques 1070 | Katerine Crampton 1071 | Katharine Maines 1072 | Kathe Simonetti 1073 | Katheryn Paradis 1074 | Kathey Tengan 1075 | Kathrine Takahashi 1076 | Kathryn Plumadore 1077 | Kathyrn Brimer 1078 | Kati Houde 1079 | Kati Porras 1080 | Katie Charlebois 1081 | Kaylee Gallager 1082 | Keenan Rooney 1083 | Keiko Haberkorn 1084 | Keira Chavira 1085 | Kellee Slavin 1086 | Kelly Humphery 1087 | Kelsi Rockey 1088 | Kelvin Mcalister 1089 | Ken Cheyne 1090 | Ken Coltrane 1091 | Ken Wooden 1092 | Keneth Lederman 1093 | Keneth Oubre 1094 | Kenisha Cowgill 1095 | Kenisha Haverly 1096 | Kenneth Hanscom 1097 | Kennith Helfrich 1098 | Kenny Carballo 1099 | Kenton Birdwell 1100 | Kenya Fred 1101 | Kermit Mole 1102 | Kerry Swyers 1103 | Kerstin Hiles 1104 | Keturah Nehring 1105 | Keva Destefano 1106 | Kevin Bethel 1107 | Kevin La 1108 | Khadijah Mejorado 1109 | Kiana Hein 1110 | Kiesha Mullaney 1111 | Kim Ulloa 1112 | Kimberlee Hamby 1113 | Kimi Nino 1114 | King Crago 1115 | Kirk Gutshall 1116 | Kirsten Weich 1117 | Kitty Alexandra 1118 | Kitty Crosier 1119 | Kiyoko Frasier 1120 | Klara Keithley 1121 | Kris Macmaster 1122 | Kristen Chevere 1123 | Kristina Beckles 1124 | Kristle January 1125 | Kristopher Tingler 1126 | Kristyn Javier 1127 | Krysten Drapeau 1128 | Krystina Borunda 1129 | Krystle Alpert 1130 | Kylee Oberle 1131 | Lachelle Breeden 1132 | Lacy Wemmer 1133 | Ladawn Bredeson 1134 | Ladonna Oda 1135 | Lady Sedillo 1136 | Lahoma Luckow 1137 | Laine Koren 1138 | Lakeisha Alli 1139 | Lakesha Waldrip 1140 | Lakita Corbo 1141 | Lamar Bull 1142 | Lamar Nolette 1143 | Lamonica Overturf 1144 | Lana Mcdonell 1145 | Lanell Connors 1146 | Lanell Tschanz 1147 | Lanelle Lovingood 1148 | Lannie Sander 1149 | Lanny Stacy 1150 | Laraine Borman 1151 | Larhonda Demaio 1152 | Larisa Tse 1153 | Larissa Letendre 1154 | Lashaun Sumners 1155 | Lashawna Sauer 1156 | Latanya Nigh 1157 | Latasha Valenza 1158 | Latesha Failla 1159 | Latina Dawe 1160 | Latonia Holifield 1161 | Latonya Veneziano 1162 | Latrice Ruth 1163 | Latricia Kersten 1164 | Lauralee Betters 1165 | Lauralee Estabrook 1166 | Lauralee Goodreau 1167 | Laure Junk 1168 | Lauren Sedgwick 1169 | Laurence Hopping 1170 | Laurinda Spindler 1171 | Lavina Brauer 1172 | Lavonna Bittinger 1173 | Lavonna Laverty 1174 | Lavonna Seidl 1175 | Lawanda Trussell 1176 | Lawerence Sholes 1177 | Lawrence Han 1178 | Lawrence Warkentin 1179 | Lazaro Rushford 1180 | Lea Pool 1181 | Leandra Blosser 1182 | Leandra Constance 1183 | Leann Prather 1184 | Leatha Maston 1185 | Lecia Hartnett 1186 | Leigh Heatwole 1187 | Leisha Capoccia 1188 | Leisha Selke 1189 | Lemuel Denis 1190 | Len Kyllonen 1191 | Len Wareham 1192 | Lenita Mallow 1193 | Lennie Alcocer 1194 | Leo Bonelli 1195 | Leo Heider 1196 | Leola Barrus 1197 | Leoma Jaquez 1198 | Leonard Mello 1199 | Leonard Zito 1200 | Leone Osmond 1201 | Leonel Byrnes 1202 | Leonel Cornell 1203 | Leonel Nevels 1204 | Leonida Raynor 1205 | Leonie Mcburney 1206 | Leopoldo Rozelle 1207 | Leopoldo Spiller 1208 | Lesha Rudy 1209 | Lesia Accardo 1210 | Lester Shipe 1211 | Letty Larocco 1212 | Letty Mccreery 1213 | Lewis Rabideau 1214 | Li Pascale 1215 | Librada Monarrez 1216 | Lida Randle 1217 | Lilli Consolini 1218 | Lilli Mccutchen 1219 | Lindsey Peer 1220 | Linn Ceron 1221 | Linnie Lyman 1222 | Linsey Heck 1223 | Lionel Cloe 1224 | Lionel Favor 1225 | Lionel Spurr 1226 | Lionel Tirado 1227 | Lissa Shadley 1228 | Lolita Stjohn 1229 | Lon Bowen 1230 | Long Allsup 1231 | Long Whittemore 1232 | Lonnie Cormack 1233 | Lonnie Spitler 1234 | Lonny Cahall 1235 | Lore Ehrenberg 1236 | Lore Zack 1237 | Loree Grable 1238 | Lorelei Gossman 1239 | Lorene Schwager 1240 | Lorene Sifford 1241 | Lorenzo Hawn 1242 | Lorenzo Stiller 1243 | Loretta Mcgillivray 1244 | Lorilee Gingerich 1245 | Lorilee Mewborn 1246 | Lorinda Padua 1247 | Lorine Kaba 1248 | Loris Karg 1249 | Lorretta Hixon 1250 | Lottie Howze 1251 | Louann Simson 1252 | Louie Peckham 1253 | Louise Barley 1254 | Loura Swider 1255 | Lourdes Wasielewski 1256 | Love Berke 1257 | Love Caudell 1258 | Lovetta Aronowitz 1259 | Lowell Lazenby 1260 | Lowell Lundberg 1261 | Lu Amato 1262 | Luanna Sires 1263 | Lucas Greenhalgh 1264 | Luci Sokolowski 1265 | Lucienne Fernando 1266 | Lucile Butts 1267 | Lucille Fredericksen 1268 | Lucio Herring 1269 | Lucius Barrier 1270 | Luetta Pawlowicz 1271 | Luise Molden 1272 | Luke Truby 1273 | Lula Horiuchi 1274 | Lurlene Neal 1275 | Luvenia Hendrickson 1276 | Luvenia Luster 1277 | Lyle Vandervort 1278 | Lyndsey Harding 1279 | Lynn Kohler 1280 | Lynnette Keever 1281 | Lynnette Wohlford 1282 | Mac Lawley 1283 | Mac Middleton 1284 | Macie Albin 1285 | Maddie Noone 1286 | Maddie Pimentel 1287 | Madeleine Pinnock 1288 | Madeline Fabiani 1289 | Madge Ratledge 1290 | Maegan Luca 1291 | Magaly Parmley 1292 | Magan Arias 1293 | Magaret Figeroa 1294 | Maira Meyer 1295 | Maire Molander 1296 | Major Chilton 1297 | Malcom Barreto 1298 | Malcom Muriel 1299 | Malik Gravelle 1300 | Malissa Ewers 1301 | Malka Stiff 1302 | Mallie Reily 1303 | Man Bushnell 1304 | Manda Climer 1305 | Manual Gervasi 1306 | Manuel Cheek 1307 | Manuel Hayashida 1308 | Marcel Norman 1309 | Marcela Westerfield 1310 | Marceline Wemple 1311 | Marcelino Brian 1312 | Marcellus Schnell 1313 | Marchelle Vandervoort 1314 | Marcia Wagaman 1315 | Marcos Eurich 1316 | Margarete Paiva 1317 | Margarett Rohrbaugh 1318 | Margart Dycus 1319 | Margene Clapper 1320 | Margeret Waring 1321 | Margie Hyche 1322 | Margo Lytton 1323 | Margorie Malinowski 1324 | Margot Cork 1325 | Margret Steger 1326 | Marguerita Rathman 1327 | Margurite Alcock 1328 | Margy Commons 1329 | Mariah Hosea 1330 | Mariano Mortenson 1331 | Maribeth Miera 1332 | Maricruz Styles 1333 | Mariela Seckman 1334 | Marilee Hintze 1335 | Marilou Perreira 1336 | Marilyn Shorts 1337 | Marilyn Tingey 1338 | Mario Anglin 1339 | Marion Summa 1340 | Marion Veatch 1341 | Marita Vermeulen 1342 | Marivel Denault 1343 | Marjory Demoura 1344 | Markus Partin 1345 | Marlana Ascher 1346 | Marlana Fahnestock 1347 | Marlene Hiott 1348 | Marlin Holmer 1349 | Marline Haskins 1350 | Marline Reddy 1351 | Marnie Seevers 1352 | Marquerite Parkhill 1353 | Marquis Denley 1354 | Marquita Roudebush 1355 | Marquitta Tusa 1356 | Marshall Ebeling 1357 | Marty Bloom 1358 | Marty Ellerbee 1359 | Marvin Dollinger 1360 | Marx Jinks 1361 | Maryalice Hermann 1362 | Marybelle Crosier 1363 | Marybeth Muhammad 1364 | Marylee Hammock 1365 | Maryln Beazley 1366 | Marylyn Pasko 1367 | Maryrose Charity 1368 | Mason Browner 1369 | Mason Burtt 1370 | Mason Mo 1371 | Mathew Ayer 1372 | Mathilde Ridgway 1373 | Matilda Pink 1374 | Matt Reames 1375 | Maud Rojas 1376 | Maura Yeoman 1377 | Maurice Sleeth 1378 | Mavis Akerley 1379 | Mavis Helsel 1380 | Maxie Spagnolo 1381 | Maybelle Myler 1382 | Mayme Redner 1383 | Mckenzie Aguila 1384 | Mechelle Larkey 1385 | Mee Rubel 1386 | Meggan Modeste 1387 | Mei Maisch 1388 | Mel Fitz 1389 | Melaine Hibbitts 1390 | Melani Hazen 1391 | Melania Faul 1392 | Melania Moles 1393 | Melida Mccammon 1394 | Melissa Hagy 1395 | Mellissa Gagner 1396 | Melonie Ashcroft 1397 | Melvina Valls 1398 | Melynda Haris 1399 | Mercedes Garvin 1400 | Mercy Norfleet 1401 | Meredith Aldrete 1402 | Meri Pettis 1403 | Merideth Gladwin 1404 | Merilyn Sprvill 1405 | Merrie Fearon 1406 | Merrilee Harkleroad 1407 | Merrill Stallard 1408 | Merry Amsler 1409 | Mervin Dehn 1410 | Mervin Hessling 1411 | Mervin Lester 1412 | Mervin Pettis 1413 | Meryl Matlock 1414 | Meta Beavers 1415 | Michael Geraci 1416 | Micheal Mui 1417 | Micheal Wisener 1418 | Michel Dalby 1419 | Michelina Langenfeld 1420 | Mickey High 1421 | Mickie Littlejohn 1422 | Migdalia Mcclard 1423 | Mike Kenton 1424 | Mikki Whitely 1425 | Milagro Brunton 1426 | Milan Vinci 1427 | Mildred Masden 1428 | Milford Bellamy 1429 | Minerva Ogorman 1430 | Ming Bufford 1431 | Minh Toliver 1432 | Miquel Hennessee 1433 | Miranda Blair 1434 | Mirella Stansel 1435 | Mirna Starner 1436 | Misty Goettl 1437 | Mitch Richey 1438 | Mitsue Ashe 1439 | Mitsuko Sigman 1440 | Miyoko Bergquist 1441 | Modesta Frahm 1442 | Modesto Deaver 1443 | Mohamed Sidhu 1444 | Moises Lambdin 1445 | Moises Mcmeen 1446 | Mollie Commodore 1447 | Molly Fazekas 1448 | Mona Zastrow 1449 | Monika Kanagy 1450 | Monroe Neri 1451 | Monte Blossom 1452 | Moon Eyler 1453 | Moon Tillison 1454 | Morgan Sanmiguel 1455 | Moriah Mooring 1456 | Moriah Nolasco 1457 | Morris Goad 1458 | Morris Wohlwend 1459 | Morton Stroup 1460 | Mose Franck 1461 | Mose Kirtley 1462 | Moses Bilbo 1463 | Moses Bonds 1464 | Mozella Coach 1465 | Muriel Diller 1466 | Murray Raiford 1467 | Murray Talbott 1468 | Myesha Turck 1469 | Myles Phillis 1470 | Myra Tilman 1471 | Myrl Shoup 1472 | Myrle Linen 1473 | Na Zerangue 1474 | Nakia Gorham 1475 | Nancey Havard 1476 | Nanette Bullion 1477 | Nannette Sharif 1478 | Naoma Gilley 1479 | Natacha Fann 1480 | Natalia Farrish 1481 | Nathanial Telesco 1482 | Natosha Bieniek 1483 | Neal Humbertson 1484 | Necole Oiler 1485 | Ned Garman 1486 | Neda Graziani 1487 | Nelida Keeton 1488 | Nelle Goldberg 1489 | Nellie Semon 1490 | Neomi Earhart 1491 | Neomi Moffat 1492 | Nereida Ciotti 1493 | Neta Strine 1494 | Nettie Ebel 1495 | Neva Urbano 1496 | Nevada Jiron 1497 | Nevada Warford 1498 | Neville Baratta 1499 | Neville Perrino 1500 | Ngoc Haring 1501 | Nguyet Buesing 1502 | Nichol Cowher 1503 | Nicholas Boley 1504 | Nickolas Randell 1505 | Nicolas Dahle 1506 | Nicolasa Maye 1507 | Nicolette Hermann 1508 | Nigel Moriarity 1509 | Nikita Sudduth 1510 | Ninfa Bridgers 1511 | Ninfa Hussein 1512 | Nisha Kleve 1513 | Nita Eslinger 1514 | Noble Mowry 1515 | Noble Valentin 1516 | Nobuko Czapla 1517 | Noe Welch 1518 | Noel Reding 1519 | Nola Bannerman 1520 | Nola Kircher 1521 | Nola Wiltshire 1522 | Noma Ramthun 1523 | Nona Chappel 1524 | Nora Mcclenny 1525 | Norah Rance 1526 | Norberto Gallager 1527 | Norberto Saunder 1528 | Noreen Blaisdell 1529 | Noreen Reimer 1530 | Noreen Shemwell 1531 | Noriko Brunswick 1532 | Noriko Perrotta 1533 | Norine Cruzan 1534 | Norman Brundage 1535 | Normand Coward 1536 | Normand Rabon 1537 | Nu Reiff 1538 | Numbers Greenly 1539 | Nyla Ready 1540 | Octavia Andersen 1541 | Odelia Butner 1542 | Odette Collado 1543 | Odis Bermejo 1544 | Odis Shrum 1545 | Oliva Herbig 1546 | Olive Lossett 1547 | Olive Topp 1548 | Ollie Fraire 1549 | Olympia Paavola 1550 | Omar Benito 1551 | Omer Runion 1552 | Ona Wenner 1553 | Orlando Darrow 1554 | Orlando Rochford 1555 | Orval Membreno 1556 | Orval Svendsen 1557 | Orville Desmond 1558 | Oscar Embree 1559 | Osvaldo Ornellas 1560 | Oswaldo Monaco 1561 | Otelia Eutsler 1562 | Otis Principe 1563 | Otto Canto 1564 | Ouida Hollow 1565 | Owen Lickteig 1566 | Ozie Ouk 1567 | Pa Ditch 1568 | Pablo Crownover 1569 | Pablo Gering 1570 | Pablo Gidney 1571 | Pablo Ochs 1572 | Page Desantiago 1573 | Page Heidecker 1574 | Palmer Cullison 1575 | Palmer Stackpole 1576 | Pamala Brunswick 1577 | Pamela Bober 1578 | Pamelia Casavant 1579 | Pamula Roll 1580 | Paris Larocque 1581 | Parker Sarratt 1582 | Pat Kaminsky 1583 | Patria Vermeulen 1584 | Patricia Callihan 1585 | Patrick Hochmuth 1586 | Pauletta Catlin 1587 | Paulette Mcmains 1588 | Paulina Neira 1589 | Paulina Nuno 1590 | Peggie Kuo 1591 | Peggie Weideman 1592 | Penelope Flinchbaugh 1593 | Percy Steinbeck 1594 | Perry Luiz 1595 | Perry Maravilla 1596 | Perry Rigsby 1597 | Pete Bibee 1598 | Pete Dennen 1599 | Petra Getty 1600 | Petronila Volker 1601 | Phillip Getz 1602 | Phillip Rothenberger 1603 | Phillis Kwon 1604 | Phyllis Weidler 1605 | Pierre Burkle 1606 | Pierre Haakenson 1607 | Porsha Barbeau 1608 | Porter Marchese 1609 | Preston Loden 1610 | Pricilla Baros 1611 | Prince Bohan 1612 | Providencia Tellez 1613 | Queen Kozel 1614 | Queenie Manns 1615 | Quentin Dambrosia 1616 | Quiana Owens 1617 | Rachal Baldon 1618 | Rachelle Kai 1619 | Rafael Stinchcomb 1620 | Rafaela Lanni 1621 | Ralph Kocian 1622 | Ramiro Hendrickson 1623 | Randa Sills 1624 | Randell Calhoon 1625 | Randell Cruise 1626 | Randi Lammert 1627 | Randy Rauch 1628 | Raphael Carlsen 1629 | Rashida Alfrey 1630 | Rashida Maciel 1631 | Rashida Stoecker 1632 | Raven Biggers 1633 | Raven Roane 1634 | Raymon Stephenson 1635 | Reanna Olberding 1636 | Reatha Hemmings 1637 | Reba Hentges 1638 | Reda Eaton 1639 | Refugio Nitti 1640 | Regena Landey 1641 | Reggie Furness 1642 | Reggie Mannings 1643 | Regine Copes 1644 | Reginia Munyon 1645 | Reid Khalsa 1646 | Reiko Oakman 1647 | Renaldo Copland 1648 | Renaldo Suydam 1649 | Renata Kinnear 1650 | Renda Koenen 1651 | Rene Czapla 1652 | Renea Arrington 1653 | Ressie Long 1654 | Retta Sprayberry 1655 | Rex Kretschmer 1656 | Reynaldo Fishel 1657 | Rhea Stella 1658 | Rhett Castle 1659 | Rhonda Rayborn 1660 | Ria Ayoub 1661 | Rich Bunn 1662 | Rich Jaramillo 1663 | Rick Schaar 1664 | Rickey Gomes 1665 | Rickey Kolbe 1666 | Rickey Swaby 1667 | Ricky Reay 1668 | Rico Eidem 1669 | Rico Wigton 1670 | Risa Sorrell 1671 | Rob Cauble 1672 | Robert Gan 1673 | Robt Hillhouse 1674 | Robt Mcnally 1675 | Rochel Lessley 1676 | Rochell Dillow 1677 | Rocio Grahm 1678 | Rocky Murga 1679 | Rocky Okeefe 1680 | Rod Chrisman 1681 | Rodrick Pooley 1682 | Rodrigo Hedstrom 1683 | Rodrigo Mcguire 1684 | Rodrigo Saunder 1685 | Rogelio Feddersen 1686 | Roland Tyre 1687 | Rolanda Mcilrath 1688 | Rolando Alling 1689 | Rolland Wernick 1690 | Romelia Murph 1691 | Romeo Quiroga 1692 | Ron Dority 1693 | Rona Sharman 1694 | Ronald Ratchford 1695 | Ronald Townsend 1696 | Ronnie Demello 1697 | Ronnie Goris 1698 | Ronny Bello 1699 | Ronny Broome 1700 | Ronny Krenz 1701 | Rory Kunzman 1702 | Rory Waldner 1703 | Rosalind Swarthout 1704 | Rosaline Steadman 1705 | Rosalva Staggs 1706 | Rosamond Jacques 1707 | Rosamond Yoshioka 1708 | Rosanne Geary 1709 | Rosaria Heier 1710 | Rosaria Jilek 1711 | Rosaura Merino 1712 | Roselee Gidley 1713 | Roselee Haston 1714 | Roselia Panos 1715 | Roselyn Kmetz 1716 | Rosendo Stancil 1717 | Rosio Rigby 1718 | Ross Gain 1719 | Rossie Corder 1720 | Roxana Bird 1721 | Roxana Loss 1722 | Roxann Voyles 1723 | Royce Doggett 1724 | Royce Mucci 1725 | Ruben Barhorst 1726 | Ruben Masker 1727 | Rubi Mikell 1728 | Rubi Pittman 1729 | Rudolf Deberry 1730 | Rudolph Henricksen 1731 | Rudy Blum 1732 | Rudy Bruder 1733 | Rudy Fann 1734 | Rupert Dubberly 1735 | Russel Syverson 1736 | Ryann Chute 1737 | Sabrina Castano 1738 | Sachiko Richburg 1739 | Sachiko Sena 1740 | Salvatore Brann 1741 | Samual Stangle 1742 | Samual Wilsey 1743 | Sandra Mcreynolds 1744 | Sanford Mailhot 1745 | Sanford Polly 1746 | Sang Bachmann 1747 | Sanjuana Cioffi 1748 | Sanjuana Nadeau 1749 | Santa Mcnish 1750 | Santa Ortegon 1751 | Santa Tomes 1752 | Sarai Demartino 1753 | Sarina Cantwell 1754 | Sarita Poulos 1755 | Saul Flor 1756 | Saul Welling 1757 | Scarlet Lansing 1758 | Scarlet Whiddon 1759 | Scott Laboy 1760 | Scottie Mahon 1761 | Scottie Visitacion 1762 | Season Young 1763 | See Telesco 1764 | Selene Gentry 1765 | Selina Taber 1766 | Selina Wentworth 1767 | Selma Soucie 1768 | September Palka 1769 | Sergio Marrufo 1770 | Seth Schmuck 1771 | Seymour Phu 1772 | Shad Ahrens 1773 | Shae Dolson 1774 | Shakia Silvas 1775 | Shakita Morris 1776 | Shalanda Evers 1777 | Shanae Skelton 1778 | Shandi Carmona 1779 | Shane Gauthier 1780 | Shanel Wallis 1781 | Shanice Dannenberg 1782 | Shanice Lawing 1783 | Shanon Hessling 1784 | Shanon Pears 1785 | Shantay Baskette 1786 | Shante Jeremiah 1787 | Shantell Amarante 1788 | Shaquita Brizendine 1789 | Sharan Chand 1790 | Sharan Nickson 1791 | Shari Hunziker 1792 | Sharlene Folse 1793 | Sharon Abele 1794 | Sharon Melody 1795 | Sharyl Raulerson 1796 | Shavonne Blagg 1797 | Shawana Perlman 1798 | Shea Stephen 1799 | Sheba Wilbur 1800 | Sheila Rydberg 1801 | Shelby Dundon 1802 | Sheldon Stoltenberg 1803 | Sheldon Vavra 1804 | Shella Mowbray 1805 | Shelley Sigel 1806 | Shera Usry 1807 | Sheridan Hobdy 1808 | Sheridan Hooker 1809 | Sherie Kinsel 1810 | Sherill Moncada 1811 | Sherman Hallowell 1812 | Sherman Westley 1813 | Sherril Kimbler 1814 | Sherryl Cookson 1815 | Shiloh Zemke 1816 | Shira Roberson 1817 | Shizue Reddin 1818 | Shizuko Walck 1819 | Shon Giefer 1820 | Shona Campuzano 1821 | Shonna Borba 1822 | Shoshana Montez 1823 | Silas Hance 1824 | Siu Kucharski 1825 | Siu Velarde 1826 | Sixta Zarate 1827 | Socorro Brendel 1828 | Socorro Dino 1829 | Sol Goodnight 1830 | Son Shiver 1831 | Son Wollard 1832 | Sonny Drummer 1833 | Sonny Pinckard 1834 | Sonny Pouncy 1835 | Soo Weatherholtz 1836 | Soon Senko 1837 | Sophia Dunnigan 1838 | Soraya Brodnax 1839 | Sparkle Jardin 1840 | Stacey Cassara 1841 | Stacey Millay 1842 | Stacy Read 1843 | Stanford Marsland 1844 | Starla Berthold 1845 | Starla Facio 1846 | Stasia Collie 1847 | Stefany Emrick 1848 | Stepanie Horne 1849 | Stephaine Fail 1850 | Stephanie Sande 1851 | Stephen Bruemmer 1852 | Stephnie Eber 1853 | Stuart Bence 1854 | Sulema Leleux 1855 | Summer Bowens 1856 | Sung Nix 1857 | Sung Tomaselli 1858 | Susanna Melillo 1859 | Susannah Hamburger 1860 | Susanne Tallmadge 1861 | Suzanne Gorham 1862 | Suzanne Rossi 1863 | Sydney Laurich 1864 | Sylvester Graddy 1865 | Sylvester Hanby 1866 | Synthia Kunze 1867 | Takako Gammon 1868 | Takako Prout 1869 | Tambra Thresher 1870 | Tamekia Mccracken 1871 | Tamela Dandridge 1872 | Tamera Appel 1873 | Tammara Bridgman 1874 | Tammera Begin 1875 | Tammera Mccullough 1876 | Tammie Strauss 1877 | Tammy Cozart 1878 | Tana Eshbaugh 1879 | Tandy Auton 1880 | Tandy Peluso 1881 | Tanisha Bennetts 1882 | Tari Coffield 1883 | Tashia Eutsler 1884 | Tatiana Fortino 1885 | Tawanda Hayes 1886 | Taylor Cifuentes 1887 | Ted Fawley 1888 | Teddy Brase 1889 | Teddy Kay 1890 | Teena Gholson 1891 | Temple Devillier 1892 | Tena Devore 1893 | Teodora Deibler 1894 | Teodoro Blundell 1895 | Teofila Sardina 1896 | Terence Beausoleil 1897 | Terence Masson 1898 | Teresia Pritchard 1899 | Terra Shuff 1900 | Terrance Nice 1901 | Terrence Frisbee 1902 | Terry Curtiss 1903 | Thad Restrepo 1904 | Thaddeus Vincent 1905 | Thanh Erhardt 1906 | Thao Tunstall 1907 | Thea Schroyer 1908 | Theda Schack 1909 | Theodore Metoyer 1910 | Theodore Teed 1911 | Theron Sarro 1912 | Thomasena Heidt 1913 | Thomasina Heyman 1914 | Thresa Burleigh 1915 | Thresa Gastelum 1916 | Thurman Marksberry 1917 | Tianna Deininger 1918 | Tiesha Parrino 1919 | Tiffiny Roche 1920 | Tilda Overcast 1921 | Tilda Whittingham 1922 | Tim Huether 1923 | Tobias Almeda 1924 | Tobias Lansing 1925 | Tobias Sulser 1926 | Tobie Snuggs 1927 | Toby Demaio 1928 | Tod Marenco 1929 | Toi Bazile 1930 | Tom Wison 1931 | Tom Wolfson 1932 | Tommy Mick 1933 | Toni Laborde 1934 | Toni Lippman 1935 | Tonita Kass 1936 | Tori Christie 1937 | Tory Bigger 1938 | Tory Ku 1939 | Towanda Fail 1940 | Towanda Johnosn 1941 | Tracy Conaway 1942 | Tran Coco 1943 | Treena Horstman 1944 | Treena Sansom 1945 | Trenton Jerome 1946 | Tressa Goodrich 1947 | Tricia Fleischmann 1948 | Trina Rimmer 1949 | Trish Dubinsky 1950 | Trisha Brinkley 1951 | Trisha Sluss 1952 | Truman Wadleigh 1953 | Tuyet Armwood 1954 | Twila Copas 1955 | Twila Fraley 1956 | Twyla Heather 1957 | Tyler Cork 1958 | Tyra Pippen 1959 | Tyree Tellez 1960 | Tyson Uresti 1961 | Ula Abdalla 1962 | Ulrike Pinkley 1963 | Valarie Ruddick 1964 | Valery Conlin 1965 | Valery Pummill 1966 | Van Hayton 1967 | Vanetta Samayoa 1968 | Vanetta Townsley 1969 | Vanita Danks 1970 | Vannessa Gurley 1971 | Vashti Luk 1972 | Vashti Maudlin 1973 | Vasiliki Silva 1974 | Velda Houghton 1975 | Vella Ascencio 1976 | Velva Borchardt 1977 | Velvet Crissman 1978 | Venessa Ratchford 1979 | Verena Abramowitz 1980 | Verlie Rowles 1981 | Verlie Sirois 1982 | Vernice Tetterton 1983 | Verona Columbus 1984 | Versie Jennison 1985 | Versie Mansfield 1986 | Veta Steffan 1987 | Vicenta Lacefield 1988 | Vicente Bridgewater 1989 | Vicki Behne 1990 | Vincenza Boyden 1991 | Vincenza Mcquiggan 1992 | Vincenza Priestley 1993 | Vinnie Garrigan 1994 | Violet Aguero 1995 | Violet Belk 1996 | Violeta Sievert 1997 | Virgilio Graver 1998 | Virgilio Madriz 1999 | Virgilio Milliner 2000 | Vito Laine 2001 | Vivan Goodlow 2002 | Vivan Spry 2003 | Vivian Hankins 2004 | Vonnie Pattillo 2005 | Wai Railey 2006 | Waldo Hilbert 2007 | Waldo Kramer 2008 | Walker Welte 2009 | Wallace Iverson 2010 | Wallace Schiavone 2011 | Wally Cashman 2012 | Wally Herrin 2013 | Wally Michalik 2014 | Wally Poorman 2015 | Walter Kendrick 2016 | Walton Dedios 2017 | Wan Ketterman 2018 | Wanda Pell 2019 | Wanetta Davy 2020 | Warner Ferebee 2021 | Warren Vanderhoff 2022 | Waylon Krieger 2023 | Weldon Stimpson 2024 | Wen Mena 2025 | Wendell In 2026 | Wendie Leasure 2027 | Wendolyn Brungardt 2028 | Wendy Bochenek 2029 | Wendy Cartlidge 2030 | Werner Siemers 2031 | Wes Eger 2032 | Wes Lesesne 2033 | Wes Parm 2034 | Wesley Passarelli 2035 | Weston Vivier 2036 | Whitney Akana 2037 | Wilbert Hendrixson 2038 | Wilburn Dibernardo 2039 | Wilda Husman 2040 | Wilford Vowell 2041 | Wilfredo Banks 2042 | Wilfredo Kellog 2043 | Wilfredo Tanaka 2044 | Wilhemina Forte 2045 | Wilhemina Rodgers 2046 | Will Pemberton 2047 | Willetta Pauline 2048 | Williams Frailey 2049 | Willian Fan 2050 | Willie Boone 2051 | Willie Hobbs 2052 | Willis Mcgahee 2053 | Wilson Lukes 2054 | Wilton Aden 2055 | Winfred Currie 2056 | Winfred Ortez 2057 | Winfred Potter 2058 | Winfred Steadman 2059 | Winston Boysen 2060 | Wm Nez 2061 | Woodrow Frasier 2062 | Wyatt Luff 2063 | Wynell Demuth 2064 | Yadira Makowski 2065 | Yaeko Mccurley 2066 | Yajaira Hosford 2067 | Yan Eakle 2068 | Yang Exner 2069 | Yetta Schroer 2070 | Yevette Huggett 2071 | Yong Alderson 2072 | Yoshiko Giguere 2073 | Youlanda Vallejo 2074 | Young Valenta 2075 | Yuk Rhyne 2076 | Yuonne Tolley 2077 | Zachariah Wagner 2078 | Zane Bass 2079 | Zita Parten 2080 | Zofia Yarberry 2081 | Zulema Maxfield 2082 | Zulma Avent 2083 | "; 2084 | 2085 | static readonly IReadOnlyList allPersons = 2086 | source.Split(new[] { Environment.NewLine , "\n" }, StringSplitOptions.RemoveEmptyEntries) 2087 | .Select((name, i) => new Person(i + 1L, name)) 2088 | .ToArray(); 2089 | 2090 | public static IReadOnlyList All 2091 | { 2092 | get { return allPersons; } 2093 | } 2094 | } 2095 | } 2096 | --------------------------------------------------------------------------------