WPF:无法在XAML中设置只读集合的项目
问题描述:
该方案非常简单。我有自定义控件的只读集合属性,我想在XAML中设置集合的项目。就像这样:WPF:无法在XAML中设置只读集合的项目
<l:CustomControl>
<l:CustomControl.ControlItems>
<l:CustomItem />
<l:CustomItem />
</l:CustomControl.ControlItems>
</l:CustomControl>
的ControlItems
酒店internal set
和public get
存取,并且是FreezableCollection<CustomItem>
类型。
事情是,我得到构建错误,说这是不可能的,因为我的ControlItems
属性没有可访问set
访问器。
据我所知,WPF支持这种情况(从.NET3.5SP1开始)。我错了吗?可能是什么问题?这适用于Grid.RowDefinitions
,我试着添加DesignerSerializationVisibility
属性,但它不起作用。
编辑:我注意到,我收到此错误,只有当我有一个internal
,private
或protected
设置访问器。当我完全删除访问器时,一切都很好。
答
好的,让我在这里写点东西来标记这个答案。如果XAML解析器具有内部,私有或受保护的集合方法,则无法将项目添加到您的控件。解决方案是删除内部/私有/受保护的集合方法。如果没有'set'方法存在,一切都很好。这听起来很愚蠢,但这是事实。
这个问题也打了我的一个队友,所以我猜人们一定会碰到同样的问题。
感谢您花时间添加答案。 – Ben 2017-09-10 11:25:15