我想在我的自定义控件上简单地做一些数学运算.我需要取一个"宽度"值并将其除以转换器参数.
这是绑定:
<Border x:Name="circleBorder"
Grid.Row="0"
CornerRadius="{Binding Path=ActualWidth, ElementName=circleGrid}"
Width="{Binding Path=ActualWidth, ElementName=circleGrid}"
Height="{Binding Path=ActualWidth, ElementName=circleGrid}"
BorderBrush="White"
BorderThickness="{Binding Converter={StaticResource CalculateBorder}, Path=Width, ElementName=circleBorder, ConverterParameter=30}">
Run Code Online (Sandbox Code Playgroud)
这是转换器,它应该做一些简单的数学运算.
public class CalculateBorder : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return ((double)value / (double)parameter);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误return ((double)value / (double)parameter);:
指定演员表无效.
问题是无法取消装箱,parameter因为在这种情况下parameter是一个string.
解决方案是将参数转换为Convert类的double
var yourDouble = Convert.ToDouble(parameter);
Run Code Online (Sandbox Code Playgroud)
上面代码的问题Convert是定义为你的Convert方法IValueConverter.因此,您需要指定更清晰的命名空间.该System班是在System.Convert命名空间.所以你应该把它指定为:
var yourDouble = System.Convert.ToDouble(parameter);
Run Code Online (Sandbox Code Playgroud)
向编译器明确表示要使用BorderThickness该类
此外,该物业Thickness有类型Thickness.所以你应该返回一个double对象引用而不是一个parameter.
| 归档时间: |
|
| 查看次数: |
2822 次 |
| 最近记录: |