Using the AutoCompleteBox in the WPF Toolkit
In this blog post I will look into the AutoCompleteBox in the WPF Toolkit, added in the february release of the WPF Toolkit. The AutoCompleteBox works, just the way I had expected it, but it actually adds a couple of more features than what I would have expected. Only one dll is needed to use the AutoCompleteBox:
System.Windows.Controls.Input.Toolkit
I will not describe all the features in details, only describe the basics of what you need to know to use it! To add a basic AutoCompleteBox, I just add the following line to my XAML:
<Controls:AutoCompleteBox Name="autocompleteBox" />
Once I have the user control in place, I can set ItemsSource and hence have the "predefined" values available:
using System.Collections.Generic;
using System.Windows;
namespace Autocomplete
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
var mylist = new List<string>
{
"Macedonia",
"Madagascar",
"Malawi",
"Malaysia",
"Maldives",
"Mali",
"Malta",
"Marshall Islands",
"Mauritania",
"Mauritius",
"Mexico",
"Micronesia",
"Moldova",
"Monaco",
"Mongolia",
"Montenegro",
"Morocco",
"Mozambique",
"Myanmar"
};
autocompleteBox.ItemsSource = mylist;
}
}
}
Running my test project I see the following behaviour:
There are basically just one more thing you need to notice about the AutoCompleteBox namely the FilterMode property. On my AutoCompleteBox I can set the filter mode to configure how the auto-complete values are picked. The following list is available at MSDN:
| Member name | Description |
| None | Specifies that no filter is used. All items are returned. |
| StartsWith | Specifies a culture-sensitive, case-insensitive filter where the returned items start with the specified text. The filter uses the String.StartsWith method, specifying StringComparer.CurrentCultureIgnoreCase as the string comparison criteria. |
| StartsWithCaseSensitive | Specifies a culture-sensitive, case-sensitive filter where the returned items start with the specified text. The filter uses the String.StartsWith method, specifying StringComparer.CurrentCulture as the string comparison criteria. |
| StartsWithOrdinal | Specifies an ordinal, case-insensitive filter where the returned items start with the specified text. The filter uses the String.StartsWith method, specifying StringComparer.OrdinalIgnoreCase as the string comparison criteria. |
| StartsWithOrdinalCaseSensitive | Specifies an ordinal, case-sensitive filter where the returned items start with the specified text. The filter uses the String.StartsWith method, specifying StringComparer.Ordinal as the string comparison criteria. |
| Contains | Specifies a culture-sensitive, case-insensitive filter where the returned items contain the specified text. |
| ContainsCaseSensitive | Specifies a culture-sensitive, case-sensitive filter where the returned items contain the specified text. |
| ContainsOrdinal | Specifies an ordinal, case-insensitive filter where the returned items contain the specified text. |
| ContainsOrdinalCaseSensitive | Specifies an ordinal, case-sensitive filter where the returned items contain the specified text. |
| Equals | Specifies a culture-sensitive, case-insensitive filter where the returned items equal the specified text. The filter uses the String.Equals method, specifying StringComparer.CurrentCultureIgnoreCase as the search comparison criteria. |
| EqualsCaseSensitive | Specifies a culture-sensitive, case-sensitive filter where the returned items equal the specified text. The filter uses the String.Equals method, specifying StringComparer.CurrentCulture as the string comparison criteria. |
| EqualsOrdinal | Specifies an ordinal, case-insensitive filter where the returned items equal the specified text. The filter uses the String.Equals method, specifying StringComparer.OrdinalIgnoreCase as the string comparison criteria. |
| EqualsOrdinalCaseSensitive | Specifies an ordinal, case-sensitive filter where the returned items equal the specified text. The filter uses the String.Equals method, specifying StringComparer.Ordinal as the string comparison criteria. |
| Custom | Specifies that a custom filter is used. This mode is used when the AutoCompleteBox.TextFilter or AutoCompleteBox.ItemFilter properties are set. |
Thats basically all you need to know! In a real-life case I would of course add the ItemSource in the XAML binding it to a corresponding property in my ViewModel, but for simplicity I decided not to add it here just to keep my example as easy and clean as possible!
The future of Caliburn. Is Caliburn dead?
Missing designer support for XAML and WPF in
How to succeed with WPF and Silverlight (Slides
RSSReader example code from my NNUG speech (WPF
Sending parameters with Caliburns ActionMessage
Unit testing Caliburn applications in NUnit
Splash screen in WPF
Running NUnit in an STA thread
Why use Custom Control instead of User Control
Getting started with Caliburn Part 2: Multiple Views
