WPF:无法在XAML中设置只读集合的​​项目

时间:2010-03-10 18:18:54

标签: wpf xaml collections

情景非常简单。我有自定义控件的只读集合属性,我想在XAML中设置集合的项目。像这样:

<l:CustomControl>
   <l:CustomControl.ControlItems>
     <l:CustomItem />
     <l:CustomItem />
  </l:CustomControl.ControlItems>
</l:CustomControl>

ControlItems属性包含internal setpublic get个访问者,类型为FreezableCollection<CustomItem>

问题是我收到构建错误,说这是不可能的,因为我的ControlItems属性没有可访问的set访问者。

据我所知,WPF支持这种情况(从.NET3.5SP1开始)。我错了吗?可能是什么问题?这适用于Grid.RowDefinitions,我尝试添加DesignerSerializationVisibility属性,但它不起作用。

修改:我注意到只有在我拥有internalprivateprotected设置访问权限时才会收到此错误。当我完全删除访问器时,一切都很好。

1 个答案:

答案 0 :(得分:6)

好的,让我在这里写一些东西来标记这个回答。如果XAML解析器具有内部,私有或受保护的set方法,则无法向控件添加项目。解决方案是删除internal / private / protected set方法。如果不存在'set'方法,一切都很好。这听起来很愚蠢,但这是事实。

这个问题也影响了我的一个队友,所以我猜人们一定会遇到同样的问题。