Я бы, вероятно, начал с его запуска через DebugConverter (вам придется написать его, я не думаю, что есть реализация, опубликованная с .Net). Это выглядит так:
(Очевидно, прикрепите точку останова в VS к одной строке кода в методе).
public class DebugConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
}
}
Теперь вы можете вставить точку останова и убедиться, что дубликат действительно обнаруживается на уровне генерации интерфейса. Изучите абсолютный путь к файлу (это, например, "." По умолчанию, который представляет текущий каталог, или что-то в этом роде? Это неправильное преобразование где-то еще? Я не знаю, почему это произойдет только в некоторых каталогах , но начните с широкого использования вашей сети отладки).
Вероятно, это не проблема с многопоточностью, потому что, на мой взгляд, Диспетчер контролирует все взаимодействия с пользовательским интерфейсом, включая наблюдаемую коллекцию, которая поддерживает ваше представление, что означает, что он может взаимодействовать только последовательно. Однако, если вы не используете ObservableCollection, возможно, у вас есть потоки? Я подозреваю, что WPF довольно строго относится к любому вспомогательному перечислению, но я не уверен. Ой, подождите, вы сказали, что используете ObservableCollection. Хорошо, не может быть нить Вы делаете что-нибудь модное с DataTemplateSelector? Есть ли стиль, который применяет шаблон представления? Могли бы вы иметь и Сеттер по умолчанию, применяющий стиль, и Триггер, включающий другой элемент просмотра?
Давайте постараемся изо всех сил, чтобы не предполагать, что это ошибка в фреймворке. По моему опыту, проблема ВСЕГДА в моем коде, даже если я не чувствую, что он может быть заранее.
(оставить комментарий)
Даже если ваша коллекция была пустой на момент привязки, вы сможете получить доступ к отдельным элементам, когда они входят вот так:
<ListView>
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text='{Binding Path=filename, Converter={StaticResource DebugConverter}' />
...etc
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Есть ли шанс опубликовать свой код?