CreateDefaultValueCallback 代理人
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
代表可作為 PropertyMetadata 建構子一部分調用的方法,以延遲相依屬性預設值的定義。
public delegate Platform::Object ^ CreateDefaultValueCallback();
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.Guid(2139130885, 10948, 23257, 172, 138, 38, 137, 3, 51, 216, 30)]
public delegate object CreateDefaultValueCallback();
Public Delegate Function CreateDefaultValueCallback() As Object
傳回值
Platform::Object
預設值。
- 屬性
範例
此範例展示了在自訂相依屬性情境中使用 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
}
})
備註
當你註冊自訂相依屬性時,可以提供一個 metadata( PropertyMetadata 值),為所有依賴屬性的使用提供預設值。 很多時候,直接以即時值的形式提供該值就足夠了。 這對任何值型態值都適用,例如為值屬性指定預設值為 -1 int 。 然而,如果你想報告一個參考屬性的預設值,例如 DependencyObject 值,可能會遇到與相依屬性運作相關的執行緒問題。 所有 DependencyObject 物件都是建立在 UI 執行緒上。 但註冊該屬性的執行緒和最終使用該物件實例並嘗試存取預設的執行緒,可能不是同一個 UI 執行緒。 如果你在 PropertyMetadata 中提供 CreateDefaultValueCallback,而非固定實例,屬性的預設值會即時建立,且實際使用該屬性的執行緒保證可存取。 換句話說,暫存器的屬性會延遲預設值,但實際使用的屬性現在可以提供一個執行緒安全的預設值。
典型的 CreateDefaultValueCallback 應該只是呼叫一個用作值的參考型別建構子,並設定該參考型別的屬性,然後回傳它。
若要在 PropertyMetadata 實例中指定 CreateDefaultValueCallback,必須使用 PropertyMetadata.Create 來建立實例,而非 PropertyMetadata 建構器。