CreateDefaultValueCallback 代理人

定義

表示可在 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 

傳回值

Object

Platform::Object

IInspectable

所需的預設值。

屬性

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 值,您可能會遇到與相依性屬性運作方式相關的執行緒問題。 所有 DependencyObject 物件一律會在 UI 執行緒上建立。 但是,註冊 屬性的執行緒和最後使用 物件實例的執行緒,並嘗試存取預設值的執行緒可能不是相同的 UI 執行緒。 如果您在PropertyMetadata中提供CreateDefaultValueCallback,而不是固定實例,則會建立屬性的預設值,並保證實際使用 屬性的執行緒可存取。 換句話說,屬性會延後預設值,但所使用的 屬性現在可以提供安全線程的預設值。

一般的 CreateDefaultValueCallback 應該不只呼叫做為值的參考型別建構函式,並設定該參考型別的屬性,然後傳回它。

若要在PropertyMetadata實例內指定CreateDefaultValueCallback,您必須使用PropertyMetadata.Create來建立實例,而不是PropertyMetadata建構函式。

適用於

另請參閱