C# 依赖项属性具有在控件构造时设置的值

C# 依赖项属性具有在控件构造时设置的值,c#,xaml,windows-runtime,winrt-xaml,C#,Xaml,Windows Runtime,Winrt Xaml,我们在WinRT XAML 我有一个自定义控件B,它具有一个依赖项属性Items,该控件位于另一个控件的模板中。使用PropertMetadata类型将dependency属性初始化为新的空集合。它从来都不是数据绑定的——请记住这一点 当我进入页面时,该控件被实例化为另一个自定义控件A的模板的一部分。从B的构造函数中的断点,当我检查项的值时,它包含0项 作为其他活动的一部分,controlA“手动”调用B.Items.Add(),以插入数据。没有数据绑定 当我向后导航,然后再次单击导航到页面时,

我们在WinRT XAML

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

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

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

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

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


这是否正确?

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


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

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


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

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


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

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


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

谢谢您的回答,但我认为这不对。属性元数据应应用于“新实例”。“为依赖项属性提供的最常见元数据是为它们提供一个默认值,该值应用于使用该属性的新实例。”-MSDN。老实说,我闻到了虫子的味道。这一个有点不对劲。这绝对不是一个bug,在这里已经讨论过好几次了。属性元数据提供的默认值仅分配给控件的每个新实例中的属性。您可以通过同时创建自定义控件的两个实例并检查
值来测试这一点。它将是同一个集合对象,即您作为默认值提供的对象。明白了,您是对的。谢谢你的回答,但我认为这不对。属性元数据应应用于“新实例”。“为依赖项属性提供的最常见元数据是为它们提供一个默认值,该值应用于使用该属性的新实例。”-MSDN。老实说,我闻到了虫子的味道。这一个有点不对劲。这绝对不是一个bug,在这里已经讨论过好几次了。属性元数据提供的默认值仅分配给控件的每个新实例中的属性。您可以通过同时创建自定义控件的两个实例并检查
值来测试这一点。它将是同一个集合对象,即您作为默认值提供的对象。明白了,您是对的。谢谢你的回答,但我认为这不对。属性元数据应应用于“新实例”。“为依赖项属性提供的最常见元数据是为它们提供一个默认值,该值应用于使用该属性的新实例。”-MSDN。老实说,我闻到了虫子的味道。这一个有点不对劲。这绝对不是一个bug,在这里已经讨论过好几次了。属性元数据提供的默认值仅分配给控件的每个新实例中的属性。您可以通过同时创建自定义控件的两个实例并检查
值来测试这一点。它将是同一个集合对象,即您作为默认值提供的对象。明白了,您是对的。谢谢你的回答,但我认为这不对。属性元数据应应用于“新实例”。“为依赖项属性提供的最常见元数据是为它们提供一个默认值,该值应用于使用该属性的新实例。”-MSDN。老实说,我闻到了虫子的味道。这一个有点不对劲。这绝对不是一个bug,在这里已经讨论过好几次了。属性元数据提供的默认值仅分配给cont的每个新实例中的属性