2013-03-03 27 views
0

我有一个奇怪的WPF问题。我在我的WPF项目引用的程序集中有两个IMultiValueConverter定义。他们的代码是相同的,但他们的名字是不同的。我已经多次清理并重建了程序集,但出于某种原因,只有一个值转换器可以工作,而另一个给出'不存在于clr名称空间'xaml错误中。两个IMultiValueConverters具有相同的代码,但名称不同 - 只有一个作品

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

你能显示一些代码? – 2013-03-03 10:28:59

+0

@ RV1987查看更新 – smartcaveman 2013-03-03 10:31:51

+0

从xaml中删除第二个转换器的引用,然后构建该转换器可用的项目,然后将xaml删除的代码添加回来,然后构建。 – ethicallogics 2013-03-03 10:36:11

回答

1

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

唯一的解决办法是重新启动VisualStudio。

到目前为止,我已经找到3个蝽象这样

  1. 改变你的XAML的布局,它在设计视图中进行更改,按F5 构建,应用程序不显示新的变化,需要VS重启
  2. 所有您还原数据自败和CTRL + Z不再起作用,需要VS 重启
  3. 设计师将不会显示任何东西,并显示IndexOutOfRange 例外,需要VS 重启

这个问题听起来像它从哪里XAML和CS不知何故不同步与同一地区,所以VS的重新启动可能是你的问题的唯一的解决藏汉(带来SP1)

相关问题