0

我遇到了一个奇怪的 WPF 问题。IMultiValueConverter我的 WPF 项目引用的程序集中有两个定义。它们的代码相同,但名称不同。我已经多次清理和重建程序集,但由于某种原因,只有一个值转换器工作,而另一个给出“clr 命名空间中不存在”xaml 错误。

注意:我知道该文件位于项目引用的正确命名空间和程序集中,因为我将 dll 直接反映在 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();
    }
}
4

1 回答 1

1

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

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

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

  1. 更改您的 xaml 布局,它在设计器视图中更改,按 F5 构建,应用程序不显示新更改,需要 VS 重启
  2. 您所有的撤消数据都消失了,并且 ctrl+z 不再起作用,需要 VS 重新启动
  3. 设计器不会显示任何内容并显示IndexOutOfRange 异常,需要 VS 重启

这个问题听起来像是来自 xaml 和 cs 以某种方式变得不同步的同一区域,因此重新启动 VS 也可能是解决您的问题的唯一方法(带上 SP1)

于 2013-03-03T11:45:56.237 回答