我写了一个值转换器,可以解决你的问题:
用法:
<Window x:Class="BindingExample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:BindingExample"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <local:DoubleToStringConverter x:Key="DoubleToStringConverter" DigitsCount="5"/>
    </Window.Resources>
    <StackPanel>
        <TextBox Text="{Binding FloatProperty, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource DoubleToStringConverter}}" Margin="5"/>
    </StackPanel>
</Window>
转换器:
[ValueConversion(typeof(double), typeof(string))]
public class DoubleToStringConverter : IValueConverter
{
    #region IValueConverter Members
    public DoubleToStringConverter()
    {
        // Default value for DigitsCount
        DigitsCount = 7;
    }
    // Convert from double to string
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value == null)
            return null;
        double doubleValue = System.Convert.ToDouble(value);
        // Calculate digits count
        int digitsBeforePoint = System.Convert.ToInt32(Math.Ceiling(Math.Log10(doubleValue)));
        int digitsAfterPoint = DigitsCount - digitsBeforePoint;
        // TODO: You have to handle cases where digitsAfterPoint < 0
        // Create formatString that is used to present doubleValue in desired format     
        string formatString = String.Format("{{0:F{0}}}", digitsAfterPoint);
        return String.Format(formatString, doubleValue);
    }
    // Convert from string to double
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value == null)
            return null;
        double? result = null;
        try
        {
            result = System.Convert.ToDouble(value);
        }
        catch
        {
        }
        return result.HasValue ? (object)result.Value : DependencyProperty.UnsetValue;
    }
    public int DigitsCount { get; set; }
    #endregion
}