【问题标题】:WPF: Cannot set items of a read-only collection in XAMLWPF:无法在 XAML 中设置只读集合的​​项目
【发布时间】:2010-03-10 18:18:53
【问题描述】:

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

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

ControlItems 属性具有internal setpublic get 访问器,并且是FreezableCollection&lt;CustomItem&gt; 类型。

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

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

编辑:我注意到只有当我有 internalprivateprotected 设置访问器时才会收到此错误。当我完全移除访问器时,一切正常。

【问题讨论】:

    标签: wpf xaml collections


    【解决方案1】:

    好的,让我在这里写一些东西来标记为已回答。如果 XAML 解析器确实具有内部、私有或受保护的 set 方法,则它无法将项目添加到您的控件。解决方案是删除 internal/private/protected set 方法。如果不存在“设置”方法,一切都很好。这听起来很愚蠢,但事实就是这样。

    我的一位队友也遇到了这个问题,所以我想人们一定遇到了同样的问题。

    【讨论】:

    • 感谢您花时间添加此答案。
    猜你喜欢
    • 1970-01-01
    • 2011-11-29
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 2014-07-06
    相关资源
    最近更新 更多