Я бы связал TextBox
с ValueConverter
, который устраняет пробелы по запросу и заменяет их подчеркиванием.
ValueConverter будет выглядеть примерно так:
public class SpaceConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return System.Convert.ToString(value);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
string text = System.Convert.ToString(value);
//the meat and potatoes is this line
text = text.Replace(" ", "_");
return text;
}
}
И ваш TextBox
будет связываться с ним следующим образом:
<TextBox Text="{Binding Path=UserString, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource SpaceConverter}}" />
Обратите внимание, что UserString
должен быть в текущем DataContext
.
Не забудьте также определить SpaceConverter
в XAML. Один из способов сделать это, предполагая, что вы работаете с UserControl
, будет:
<UserControl.Resources>
<local:SpaceConverter x:Key="SpaceConverter" />
</UserControl.Resources>
Где local
определяется как пространство имен, содержащее SpaceConverter.cs.