0

У меня возникла странная проблема WPF. У меня есть два определения IMultiValueConverter в сборке, на которые ссылается мой проект WPF. Их код идентичен, но их имена разные. Я несколько раз очищал и перестраивал сборки, но по какой-то причине работает только один из преобразователей Value, а другой - «не существует в ошибке xaml в пространстве имен clr».Два IMultiValueConverters с идентичным кодом, но разные имена - только один работает

Примечание: Я знаю, что файл находится в правильном пространстве имен и сборке, на которые ссылается проект, потому что я отразил dll непосредственно из папки bin проекта проекта WPF.

Есть ли какие-либо объяснения этому явлению?

//// 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

Вы можете показать код? –

+0

@ RV1987 см. Обновление – smartcaveman

+0

Удалите ссылку на этот второй конвертер из xaml, а затем создайте проект, в котором этот конвертер доступен, а затем добавьте xaml удаленный код обратно, а затем выполните сборку. – ethicallogics

ответ

1

В новом VS2012 есть некоторые странные ошибки, которые кажутся какими-то проблемами кеширования.

Единственным решением является перезапуск VisualStudio.

До сих пор я нашел 3 ошибки как этот

  1. изменения макет XAML, он меняет с точки зрения дизайнера, нажмите F5 для сборки, приложение не показывает новые изменения, необходимо VS перезапустить
  2. Все ваши данные пропадают уничтожьте и Ctrl + Z больше не работает, нуждаются в VS рестарта
  3. Designer не будет ничего и отображает IndexOutOfRange исключений показывает, нуждается в VS рестарте

Этот вопрос звучит, как его приход из той же области, где XAML и CS-то рассинхронизации, поэтому перезапуск VS может быть единственным решением для вашей проблемы как хорошо (Навлеките SP1)