依赖项属性在控件构造时设置了一个值
本文关键字:一个 设置 属性 控件 依赖 | 更新日期: 2023-09-27 18:34:24
我们在WinRT XAML中。
我有一个带有依赖属性Items
的自定义控件B
,该控件位于另一个控件的模板中。依赖项属性使用 PropertMetadata
类型初始化为新的空集合。它永远不会是数据绑定的 - 请记住这一点。
当我进入页面时,该控件被实例化为另一个自定义控件A
模板的一部分。从 B
构造函数中的断点开始,当我检查 Items
的值时,它包含 0 个项目。
作为其他活动的一部分,控制A
"手动"调用B.Items.Add()
插入数据。没有数据绑定。
当我向后导航,然后单击以再次导航到页面时,构造函数再次触发,但这次Items
仍然具有A
添加的值。它保留其价值。
因此,即使控件被卸载和加载(我可以看到事件),控件和依赖项属性也不会重新初始化。
这是对的吗?
依赖项属性在类B
中声明为静态字段。它只初始化一次,因此属性元数据中的新集合仅初始化一次,稍后由属性的所有"实例"共享。这是依赖项属性声明中常见的错误。
应在类 B
的构造函数中将依赖项属性值设置为新的空集合,而不是通过属性元数据提供默认值。