两个具有相同代码但名称不同的IMultiValueConverters - 只有一个有效

时间:2013-03-03 10:27:17

标签: wpf xaml data-binding ivalueconverter imultivalueconverter

我有一个奇怪的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();
    }
}

1 个答案:

答案 0 :(得分:1)

新的VS2012中存在一些奇怪的错误,这似乎是某种缓存问题。

唯一的解决方案是重新启动VisualStudio。

到目前为止,我发现了3个这样的错误

  1. 更改你的xaml布局,它在设计师视图中更改,点击F5即可 构建,应用程序不显示新的更改,需要VS重启
  2. 所有撤消数据消失和ctrl + z不再有效,需要VS. 重新启动
  3. 设计师不会显示任何内容并显示IndexOutOfRange 异常,需要VS.     重新启动
  4. 这个问题听起来像来自xaml和cs以某种方式变得不同步的同一区域,因此重启VS可能是解决问题的唯一方法(带来SP1)