2010-03-10 71 views
2

该方案非常简单。我有自定义控件的只读集合属性,我想在XAML中设置集合的项目。就像这样:WPF:无法在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属性,但它不起作用。

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

回答

6

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

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

+0

感谢您花时间添加答案。 – Ben 2017-09-10 11:25:15

相关问题