A simple TrimmedTextBox for WPF
So I wanted a TextBox that trims automatically. At first I played with the idea of a converter, but that just didn’t work out. Try using a trim converter with UpdateSourceTrigger=PropertyChanged and you will see what I mean. Yes, it seems you cannot even type a space. I need the trimming to occur after losing focus.
After thinking about it, a converter was the wrong method anyway. If I want a TextBox that always trims when it loses focus, why not just make one by inheriting from TextBox and adding a method to the LostFocus event. So I did.
using System.Windows.Controls;
namespace WpfSharp.UserControls
{
public class TrimmedTextBox : TextBox
{
public TrimmedTextBox()
{
LostFocus += TrimOnLostFocus;
}
void TrimOnLostFocus(object sender, System.Windows.RoutedEventArgs e)
{
var trimTextBox = sender as TrimmedTextBox;
if (trimTextBox != null)
trimTextBox.Text = trimTextBox.Text.Trim();
}
}
}
Now to use this in XAML, add this namespace to your UserControl or Window:
xmlns:wpfsharp="clr-namespace:WpfSharp.UserControls;assembly=WpfSharp"
Then use the object like this:
<wpfsharp:TrimmedTextBox Name="TextBoxAccount" TextWrapping="Wrap" MinWidth="200" Text="{Binding Account}" />
Remember, it is the simple solutions that are best.
