需要帮助开发和绑定Double< - >变流器

时间:2013-12-15 19:32:45

标签: c# wpf textbox wpf-controls

我开发工程应用程序,因此不断处理double个数字。作为一个新手,由于ComboBoxes和其他控件更喜欢字符串,我的模型是基于字符串的:

Diameter = "0.523";

我已完成Google搜索,并且有一些关于转换器的初步(令人困惑,相互矛盾)的信息:可以使用统一的解释。

IValueConverter界面会建立Convert()ConvertBack()对,但每个界面的方向是什么?转换器是XAML绑定到,例如TextBox,我的模型处理doubleConvert()的一半是TextBox out 还是其中的一部分?

我的目标是在输入非法数字时形成的红色矩形附近添加警告:“您键入的浮点数的格式不正确”。

我写了2个转换器类:DoubleToStringStringToDouble。不确定哪一个是正确的(加上两者都崩溃了)。

2 个答案:

答案 0 :(得分:3)

大多数时候,人们只使用Convert方法进行工作。 ConvertBack用于双方都需要转换时。 XAML到模型反之亦然

这是double的示例。您可以根据需要进一步格式化值。

[ValueConversion(typeof(double) ,typeof(string))]
public class DoubleConverter : IValueConverter
{
    public object Convert(object value ,Type targetType ,object parameter ,CultureInfo culture)
    {
        double doubleType = (double)value;
        return doubleType.ToString();
    }

    public object ConvertBack(object value ,Type targetType ,object parameter ,CultureInfo culture)
    {
        string strValue = value as string;
        double resultDouble;
        if ( double.TryParse(strValue ,out resultDouble) )
        {
            return resultDouble;
        }
        return DependencyProperty.UnsetValue;
    }
}

答案 1 :(得分:0)

转换用于将模型的值转换为文本框。 ConvertBack将文本框的值转换回模型。

你说你在你的模特中保留了弦乐。这意味着您根本不需要转换器。但是,您最好将双打放入模型中并正确转换它们。

此外,如果您只需要单向转换(从模型到控件),则根本不需要转换器。例如,请参阅here