public class PolynomialConverter : IValueConverter
{
public DoubleCollection Coefficients { get; set; }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
double x = (double)value;
double output = 0;
for (int i = Coefficients.Count - 1; i >= 0 ; i--)
output += Coefficients[i] * Math.Pow(x, (Coefficients.Count - 1) - i);
return output;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
//This one is a bit tricky, if anyone feels like implementing this...
throw new NotSupportedException();
}
}
2条答案
按热度按时间mv1qrgav1#
输入FirstDegreeFunctionConverter:
如何使用?
您可以在资源部分中为每个用途创建一个资源:
这个名字来自函数y = ax + B(在挪威语中称为“一次函数”),当然也可以将其升级为二次函数y= ax^2 + bx + c,但我还没有找到它的用途。
我有一个情况,我想使列的基础上的宽度。每当我获得200像素以上的宽度时,我希望容器显示另一列。当时我硬编码了一个转换器,但我应该做一个y=(a/x)+ b转换器。
现在,我应该给这个转换器起什么名字,这样大家就能明白它是什么了?因为我是挪威人,所以我用了我们在学校学到的表达,直接翻译。如果您有任何建议或意见,请告诉我。任何改进或改进你认为也将不胜感激。
也许“LinearTransformConverter”会更好地传达转换器为您做了什么,我会考虑的。还有其他提议吗Tor
waxmsbnn2#
更好的是
PolynomialConverter
,这里是单向版本:示例如下:
可替代地,可以使用ConverterParameter来代替不设置转换器本身中的Coefficients。