Xaml Designer, использующий старые типы после перестроения проекта, Item не относится к типу Item - PullRequest
0 голосов
/ 24 сентября 2018

Я столкнулся с досадной ошибкой в ​​конструкторе Wpf Xaml ResourceDictionary, когда типы не перестраиваются вместе с проектом.То есть все типы взяты из ранее созданной сборки и поэтому никогда не будут совпадать при сравнении типов.

У меня есть проект с настраиваемым списком пользовательских типов в словаре ресурсов, и мне нужнопривести к этим типам для вещей, чтобы работать правильно.Но каждый раз, когда я перестраиваюсь с изменениями, конструктор сохраняет старые типы и делает представление времени разработки бесполезным.

Я обнаружил, что изменение списка исправит исключение, но с этим приходится сталкиватьсяэто для каждого настраиваемого списка после каждой сборки, есть ли обходной путь для этой проблемы?

Пример кода, который воспроизводит ошибку:

  1. Создать новый Wpf-проект.

  2. Добавить следующие файлы ...

ItemCollection.cs

using System.Collections.ObjectModel;

namespace XamlTest {
    public class ItemCollection : ObservableCollection<Item> {
    }
    public class Item {
    }
}

ItemsList.xaml (ResourceDictionary)

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:XamlTest">
  <local:ItemCollection x:Key="ItemsList">
    <local:Item />
    <local:Item />
    <local:Item />
  </local:ItemCollection>
</ResourceDictionary>

Построить один раз.

Измените число Item s в списке с помощью копирования, вставки и построения.

Повторяйте шаг 4. до тех пор, пока не произойдет исключение.

Исключение: The value "XamlTest.Item" is not of type "XamlTest.Item" and cannot be used in this generic collection. Parameter name: value

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...