CreateDefaultValueCallback 委托
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示可以作为 PropertyMetadata 构造函数的一部分调用的方法,以延迟依赖属性默认值的定义。
public delegate Platform::Object ^ CreateDefaultValueCallback();
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(3605836076, 5557, 20168, 185, 92, 205, 210, 8, 240, 129, 83)]
class CreateDefaultValueCallback : MulticastDelegate
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.Guid(3605836076, 5557, 20168, 185, 92, 205, 210, 8, 240, 129, 83)]
public delegate object CreateDefaultValueCallback();
Public Delegate Function CreateDefaultValueCallback() As Object
返回值
所需的默认值。
- 属性
Windows 要求
设备系列 |
Windows 10 (在 10.0.10240.0 中引入)
|
API contract |
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)
|
示例
此示例演示在自定义依赖属性方案中使用 CreateDefaultValueCallback 的伪代码。 具体来说,这会创建 PropertyMetadata 以用于 DependencyProperty.Register 调用 (不显示在) 。
PropertyMetadata metadata = PropertyMetadata.Create(
new CreateDefaultValueCallback(() =>
{
return new CustomClass() //a DependencyObject
{
CustomProperty1 = "default", //DependencyProperty of type String
CustomProperty2 = -1; //DependencyProperty of type Int32
}
})
注解
注册自定义依赖属性时,可以提供 元数据 (PropertyMetadata 值) ,该值为依赖属性的所有使用提供默认值。 很多时候,直接在元数据中提供该值作为即时值就足够了。 这始终适用于任何值类型值,例如为 int 值属性指定默认值 -1。 但是,如果要报告作为引用属性的属性的默认值(例如 DependencyObject 值),可能会遇到与依赖属性工作方式相关的线程问题。 始终在 UI 线程上创建所有 DependencyObject 对象。 但是,注册 属性的线程和最终使用 对象的实例并尝试访问默认值的线程可能不是同一 UI 线程。 如果在 PropertyMetadata 而不是固定实例中提供 CreateDefaultValueCallback,则属性的默认值是实时创建的,并且保证实际使用 属性的线程能够访问。 换句话说,作为 寄存器的属性会延迟默认值,但所使用的 属性现在可以提供线程安全的默认值。
典型的 CreateDefaultValueCallback 只应为用作值的引用类型调用构造函数,并设置该引用类型的属性,然后返回它。
若要在 PropertyMetadata 实例中指定 CreateDefaultValueCallback,必须使用 PropertyMetadata.Create 来创建实例,而不是 PropertyMetadata 构造函数。