public class HexToHandSelectedConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Int64 temp = UInt64.Parse(value, NumberStyles.HexNumber);
if (((Int64)temp & 0x0f) > 0) return Visibility.Collapsed;
else return Visibility.Visible;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
我试图将Visibility绑定到包含我正在生成的十六进制代码的int64依赖项属性。该属性的最大值为0xFFFFFFFFFFFFFFFF。一旦函数设置了最后4位数(LAST HEX CHARACTER),控件应该会崩溃。
代码编译但我在运行程序时遇到InvalidCastException。 任何想法或想法将不胜感激。
编辑: 我刚才意识到转换器错了。控件绑定到的依赖项属性实际上是一个String,表示将转换为int64的HEX数字,在必要时修改并转换回字符串。
现在我遇到了问题 Int64 temp = UInt64.Parse(value,NumberStyles.HexNumber);
代码现在不会编译。字符串到十六进制转换虽然在这个转换器之外工作..
答案 0 :(得分:0)
您假设值始终为Int64。你可能想检查一下。
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
long longValue;
try {
longValue = Convert.ToInt64(value);
} catch {
return Visibility.Visible;
}
if ((longValue & 0x0f) > 0) return Visibility.Collapsed;
return Visibility.Visible;
}