Я получаю действительно странное исключение XamlParseException, и я понятия не имею, почему.
Сообщение «Невозможно установить неизвестный член« {clr-namespace: Caliburn.Micro; сборка = Caliburn.Micro} View.Model ».
В модели представления у меня есть ObservableCollection, которую я инициализирую в конструкторе следующим образом:
internal class EntityListScreenViewModel : Screen
{
public EntityListScreenViewModel()
{
var list = new List<Entity>() { new Entity() { Name = "Joe" } };
this.Entities = new ObservableCollection<Entity>(list);
}
public ObservableCollection<Entity> Entities { get; set; }
}
Вот вид:
<Window x:Class="WpfApp.EntityListScreenView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="350" Width="525">
<Grid>
<ListBox x:Name="Entities"/>
</Grid>
</Window>
Когда я вызываю WindowManager.ShowWindow() для экземпляра EntityListScreenViewModel, я получаю исключение.
Если я не добавляю объект в список (используя вместо этого var list = new List<Entity>();
), я не получаю исключение.
У кого-нибудь есть идеи?
Обновление:
Я попытался изменить ObservableCollection на строку типа и добавил одну строку, но не получил исключения. Я подозреваю, что Caliburn.Micro каким-то образом ищет представление для представления Entity в ListBox. Может быть, это то, что происходит?
Обновление 2:
Наконец-то я понял, что на самом деле происходит... DefaultItemTemplate в ConventionManager имел некоторый проанализированный Xaml, который искал сборку "Caliburn.Micro", но я поместил код с другой сборкой. Изменил Xaml и проблема ушла.