【发布时间】:2013-03-03 10:27:17
【问题描述】:
我遇到了一个奇怪的 WPF 问题。我的 WPF 项目引用的程序集中有两个 IMultiValueConverter 定义。它们的代码相同,但名称不同。我已经多次清理和重建程序集,但由于某种原因,只有一个值转换器工作,而另一个给出“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();
}
}
【问题讨论】:
-
你能显示一些代码吗?
-
从 xaml 中删除第二个 Converter 的引用,然后构建该转换器可用的项目,然后将 xaml 删除的代码添加回来,然后构建。
-
几个小问题 - 命名空间是一样的吗?还有你在哪里引用这些转换器的xaml(你也可以发布那个代码)?使方法虚拟化的任何原因(虽然不相关)?
-
我只是复制粘贴了两个工作正常?? VS2012 在 xaml 编辑器中有一些非常烦人的错误,尝试在另一个 VS 实例中打开你的项目,看看它是否在那里编译
-
@ethicallogics - 没有骰子
标签: wpf xaml data-binding ivalueconverter imultivalueconverter