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

Ugu*_*ran 2 collections wpf xaml

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

<l:CustomControl>
   <l:CustomControl.ControlItems>
     <l:CustomItem />
     <l:CustomItem />
  </l:CustomControl.ControlItems>
</l:CustomControl>
Run Code Online (Sandbox Code Playgroud)

ControlItems物业有internal setpublic get访问者,是类型FreezableCollection<CustomItem>.

问题是我遇到了构建错误,说这是不可能的,因为我的ControlItems属性没有可访问的访问set器.

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

编辑:我注意到,我只收到此错误时,我有一个internal,privateprotectedset访问.当我完全删除访问器时,一切都很好.

Ugu*_*ran 6

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

这个问题也确实击中了我的一个队友,所以我猜人们必须遇到同样的问题.