情景非常简单。我有自定义控件的只读集合属性,我想在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
设置访问权限时才会收到此错误。当我完全删除访问器时,一切都很好。
答案 0 :(得分:6)
好的,让我在这里写一些东西来标记这个回答。如果XAML解析器具有内部,私有或受保护的set方法,则无法向控件添加项目。解决方案是删除internal / private / protected set方法。如果不存在'set'方法,一切都很好。这听起来很愚蠢,但这是事实。
这个问题也影响了我的一个队友,所以我猜人们一定会遇到同样的问题。