依赖属性具有根据控制结构设置的值

时间:2013-10-08 20:17:24

标签: c# xaml windows-runtime winrt-xaml

我们在WinRT XAML。

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

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

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

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

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

这是对的吗?

1 个答案:

答案 0 :(得分:3)

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

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