我得到一个非常奇怪的 XamlParseException,我不知道为什么。
消息是“无法设置未知成员 '{clr-namespace:Caliburn.Micro;assembly=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>
当我在 EntityListScreenViewModel 实例上调用 WindowManager.ShowWindow() 时,我得到了异常。
如果我没有将实体添加到列表中(var list = new List<Entity>();
改为使用),则不会出现异常。
有人有什么想法吗?
更新:
我尝试将 ObservableCollection 更改为字符串类型并添加了一个字符串,但我没有收到异常。我的怀疑是 Caliburn.Micro 正在以某种方式寻找一个视图来表示 ListBox 中的实体。这可能是怎么回事?
更新 2:
我终于弄清楚到底发生了什么...... ConventionManager 中的 DefaultItemTemplate 有一些解析的 Xaml 正在寻找“Caliburn.Micro”程序集,但我已将代码与另一个程序集一起放入。更改了 Xaml,问题就消失了。