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 值,您可能會遇到與相依性屬性運作方式相關的執行緒問題。 所有 DependencyObject 物件一律會在 UI 執行緒上建立。 但是,註冊 屬性的執行緒和最後使用 物件實例的執行緒,並嘗試存取預設值的執行緒可能不是相同的 UI 執行緒。 如果您在PropertyMetadata中提供CreateDefaultValueCallback,而不是固定實例,則會建立屬性的預設值,並保證實際使用 屬性的執行緒可存取。 換句話說,屬性會延後預設值,但所使用的 屬性現在可以提供安全線程的預設值。
一般的 CreateDefaultValueCallback 應該不只呼叫做為值的參考型別建構函式,並設定該參考型別的屬性,然後傳回它。
若要在PropertyMetadata實例內指定CreateDefaultValueCallback,您必須使用PropertyMetadata.Create來建立實例,而不是PropertyMetadata建構函式。