依赖项属性在控件构造时设置了一个值

本文关键字:一个 设置 属性 控件 依赖 | 更新日期: 2023-09-27 18:34:24

我们在WinRT XAML中。

我有一个带有依赖属性Items的自定义控件B,该控件位于另一个控件的模板中。依赖项属性使用 PropertMetadata 类型初始化为新的空集合。它永远不会是数据绑定的 - 请记住这一点。

当我进入页面时,该控件被实例化为另一个自定义控件A模板的一部分。从 B 构造函数中的断点开始,当我检查 Items 的值时,它包含 0 个项目。

作为其他活动的一部分,控制A"手动"调用B.Items.Add()插入数据。没有数据绑定。

当我向后导航,然后单击以再次导航到页面时,构造函数再次触发,但这次Items仍然具有A添加的值。它保留其价值。

因此,即使控件被卸载和加载(我可以看到事件),控件和依赖项属性也不会重新初始化。

这是对的吗?

依赖项属性在控件构造时设置了一个值

依赖项属性在类B中声明为静态字段。它只初始化一次,因此属性元数据中的新集合仅初始化一次,稍后由属性的所有"实例"共享。这是依赖项属性声明中常见的错误。

应在类 B 的构造函数中将依赖项属性值设置为新的空集合,而不是通过属性元数据提供默认值。