我有一个奇怪的WPF问题。我在WPF项目引用的程序集中有两个IMultiValueConverter
定义。他们的代码是相同的,但他们的名字是不同的。我已经多次清理和重建了程序集,但由于某种原因,只有一个Value转换器工作,而另一个给出了'clr命名空间中不存在'xaml错误。
注意:我知道该文件位于项目正在引用的正确名称空间和程序集中,因为我直接从WPF项目的bin文件夹中反映了该文件。
这种现象有什么解释吗?
//// this works
public class IndexConverter : IMultiValueConverter
{
public virtual object Convert(
object[] values, Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
var element = values[0] as Object;
var sequence = values[1] as IEnumerable;
return sequence.Cast<Object>().ToList().FindIndex(c => c.Equals(element)).ToString();
}
public virtual object[] ConvertBack(
object value, Type[] targetTypes,
object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
//// this gives me xaml errors
public class IndexConverterCopy : IMultiValueConverter
{
public virtual object Convert(
object[] values, Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
var element = values[0] as Object;
var sequence = values[1] as IEnumerable;
return sequence.Cast<Object>().ToList().FindIndex(c => c.Equals(element)).ToString();
}
public virtual object[] ConvertBack(
object value, Type[] targetTypes,
object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
答案 0 :(得分:1)
新的VS2012中存在一些奇怪的错误,这似乎是某种缓存问题。
唯一的解决方案是重新启动VisualStudio。
到目前为止,我发现了3个这样的错误
IndexOutOfRange
异常,需要VS.
重新启动这个问题听起来像来自xaml和cs以某种方式变得不同步的同一区域,因此重启VS可能是解决问题的唯一方法(带来SP1)