我开发工程应用程序,因此不断处理double
个数字。作为一个新手,由于ComboBoxes和其他控件更喜欢字符串,我的模型是基于字符串的:
Diameter = "0.523";
我已完成Google搜索,并且有一些关于转换器的初步(令人困惑,相互矛盾)的信息:可以使用统一的解释。
IValueConverter
界面会建立Convert()
和ConvertBack()
对,但每个界面的方向是什么?转换器是XAML绑定到,例如TextBox
,我的模型处理double
。 Convert()
的一半是TextBox
的 out 还是其中的一部分?
我的目标是在输入非法数字时形成的红色矩形附近添加警告:“您键入的浮点数的格式不正确”。
我写了2个转换器类:DoubleToString
和StringToDouble
。不确定哪一个是正确的(加上两者都崩溃了)。
答案 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。