首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >'{clr-namespace:Caliburn.Micro;assembly=Caliburn.Micro}View.Model'“Caliburn.Micro问题: XamlParseException”无法设置未知成员XamlParseException

'{clr-namespace:Caliburn.Micro;assembly=Caliburn.Micro}View.Model'“Caliburn.Micro问题: XamlParseException”无法设置未知成员XamlParseException
EN

Stack Overflow用户
提问于 2011-05-14 17:20:01
回答 2查看 1.9K关注 0票数 2

我得到了一个非常奇怪的XamlParseException,我不知道为什么。

该消息为“无法设置未知成员'{clr-namespace:Caliburn.Micro;assembly=Caliburn.Micro}View.Model'.”“。

在视图模型中,我有一个在构造函数中初始化的ObservableCollection,如下所示:

代码语言:javascript
复制
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; }
}

以下是您的看法:

代码语言:javascript
复制
<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实例上调用EntityListScreenViewModel()时,就会得到异常。

如果我不向列表中添加一个实体(而不是使用var list = new List<Entity>(); ),我就不会得到异常。

有人有什么想法吗?

更新:

我尝试将ObservableCollection更改为string类型,并添加了一个字符串,但没有得到异常。我怀疑Caliburn.Micro正在寻找一个视图来表示ListBox中的实体。这可能就是发生了什么吗?

更新2:

我终于弄明白到底是怎么回事.DefaultItemTemplate在ConventionManager中有一些解析的Xaml,它正在寻找"Caliburn.Micro“程序集,但我已经将代码与另一个程序集放在了一起。改变了Xaml,问题就消失了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-16 06:18:57

我怀疑Caliburn.Micro正在寻找一个视图来表示ListBox中的实体

是的,这就是正在发生的事情。默认情况下,使用名称约定绑定列表时,杯标微将此解释为绑定到ViewModels列表,而不是实体列表。这使您可以绑定到ViewModels列表,而无需指定要在ItemTemplate of ItemsControl中使用的特定视图,最终得到的是特定于该ViewModel的视图列表。

为了确保这种情况不会发生,您应该能够手动绑定到ListBox。如果卡利伯恩微已经看到ItemsSource绑定,它将忽略该约定。

代码语言:javascript
复制
<ListBox x:Name="Entities" ItemsSource="{Binding Entities}"/>
票数 0
EN

Stack Overflow用户

发布于 2011-05-16 06:46:32

我不确定,但是您可以尝试将EntityListScreenView放在Views名称空间中,EntityListScreenViewModel放在ViewModels名称空间中-当然,如果您使用“标准”Bootstrapper类的话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6003517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档