You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

引用类型为默认值的依赖属性最佳实现方式咨询

依赖属性引用类型默认值的共享问题及解决办法

我定义了这样的依赖属性:

public static DependencyProperty ItemsProperty = DependencyProperty.Register(nameof(Items), typeof(ObservableCollection<ContentControl>), typeof(Group), new PropertyMetadata(new ObservableCollection<ContentControl>()));

这里存在一个问题:把引用类型作为依赖属性的默认值时,这个默认实例只会被创建一次。当创建Group类的第二个实例时,所有实例都会共享同一个ObservableCollection引用,导致不同实例的Items数据相互干扰。

可行解决方式

不要在依赖属性注册时设置默认值,而是在类的构造函数里初始化新的集合实例:

public static DependencyProperty ItemsProperty = DependencyProperty.Register(nameof(Items), typeof(ObservableCollection<ContentControl>), typeof(Group));

public Group()
{
    Items = new ObservableCollection<ContentControl>();
}

这样每个Group实例都会拥有独立的ObservableCollection对象,彻底避免了引用共享的问题。

内容的提问来源于stack exchange,提问作者Cryosys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 13:15:51