Вы можете использовать событие TextChanged и каждый раз заменять свойство Text.
private void textBox_TextChanged(object sender, TextChangedEventArgs e)
{
TextBox box = (TextBox)sender;
box.Text = box.Text.Replace(",", ".");
}
Если вы используете Binding, вы можете создать конвертер, который заменит текст при обратном преобразовании.
<TextBox Name="textBox" Text="{Binding Path=number, Converter=DecimalConverter}" />
и
public class DecimalConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
return value;
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
string strValue = (string)value;
return strValue.Replace(",",".");
}
}