0

我们在 WinRT XAML 中。

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

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

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

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

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

它是否正确?

4

1 回答 1

3

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

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

于 2013-10-08T20:48:09.247 回答