我想使用xaml在Net 4.5中使用ObservableCollection类。
这就是我在xaml中指定命名空间的方式:
xmlns:coll="clr-namespace:System.Collections.ObjectModel;assembly=System"
收集声明是这样的:
<ic:MyControl.Resources>
<coll:ObservableCollection x:TypeArguments="commands:Command" x:Key="CommandCollection"/>
</ic:MyControl.Resources>
我收到了这个编译错误:
XML名称空间中不存在标记'ObservableCollection' 'CLR-名称空间:System.Collections.ObjectModel;装配=系统'。
我认为程序集名称可能不正确,但在这里的论坛上搜索说它是系统程序集。谁能告诉我出了什么问题?
答案 0 :(得分:2)
来自ObservableCollection documentation on MSDN的备注部分:
关于XAML使用的注意事项
ObservableCollection可以用作XAML对象元素 Windows Presentation Foundation(WPF),版本3.0和3.5。 但是,使用情况有很大限制。
...
使用ObservableCollection功能的更直接的方法 来自XAML的应用程序是声明自己的非泛型自定义 派生自ObservableCollection的集合类,以及 将其约束为特定类型。然后映射包含的程序集 这个类,并将其作为XAML中的对象元素引用。
答案 1 :(得分:0)
我同意上面的答案。但是,您可以更进一步,只需将您的集合公开为资源中的CollectionViewSource并绑定到该集合,然后将您的源集合作为ViewModel中的ObservableCollection。可以在此处找到CollectionViewSource的详细信息。