需要帮助开发和绑定双<-->转换器



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

Diameter = "0.523";

我在谷歌上搜索过,有一些关于转换器的初步信息(令人困惑、矛盾):可能需要统一的解释。

IValueConverter接口建立了Convert()ConvertBack()对,但两者的方向是什么?转换器是XAML绑定到TextBox的,而我的模型处理的是doubleConvert()的半动作是从TextBox中退出还是进入?

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

我写了两个转换器类:DoubleToStringStringToDouble。不确定哪一个是合适的(另外,两者都崩溃了)。

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

这是双人间的样品。您可以根据需要进一步格式化该值。

[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;
    }
}
Convert用于将模型的值转换为文本框。ConvertBack将文本框的值转换回您的模型。

你说你在你的模特身上牵线搭桥。这意味着您根本不需要转换器。但是,您最好在模型中放置替身,并对其进行适当转换。

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

最新更新