語言

ControlTemplate.TargetType 屬性

定義

取得或設定 ControlTemplate 所應用的類型。

public:
 property TypeName TargetType { TypeName get(); void set(TypeName value); };
TypeName TargetType();

void TargetType(TypeName value);
public System.Type TargetType { get; set; }
var typeName = controlTemplate.targetType;
controlTemplate.targetType = typeName;
Public Property TargetType As Type
<ControlTemplate TargetType="typeName"/>

屬性值

ControlTemplate 所應用的類型。 這個數值通常是在 XAML 裡設定的,而不是程式碼。 請參閱備註。

備註

指定 TargetType 值的典型方法是透過 ControlTemplate 上的 XAML 屬性。 在 XAML 中設定時,TargetType 的意義和你提供的值會與 XAML 中型別的表示方式有些相似。 特別是,任何用來稱呼某特定類型為 XAML 元素所需的前綴,也應包含在 TargetType 值字串的值中。 例如,若範本目標是針對特定標記範圍內必須先有已映射前綴「local」的自訂型態,則 TargetType 值應包含相同的前綴。 此行為由 Windows 執行階段 XAML 解析器內建的轉換行為所實現。

大多數情況下,你會為 ControlTemplate 設定 TargetType,而該 ControlTemplate 位於 Template 屬性的 Setter 裡。 這反過來又包含在你為控制點定義的隱含 風格 之中。 ControlTemplate.TargetType 的值與包含 Style 的 Style.TargetType 值應始終是相同的型別參考,並指向同一個隱含命名的控制項。 否則控制模板可能無法運作。

欲了解更多如何撰寫控制範本的資訊,請參閱 XAML 控制範本。

Note

如果你之前為 Windows Presentation Foundation(WPF)寫過 XAML,那麼你可能已經用 x:Type 標記擴充功能來填補任何需要 System.Type 的 XAML 值。 Windows 執行階段 XAML 解析器不支援 x:Type。 相反地,你應該以名稱來指稱該型別,且不使用任何標記擴充功能,且任何必要的 XAML 轉為後備型別轉換,已經由前一段描述的內建轉換行為處理。

在程式碼中使用 TargetType

在程式碼中設定 TargetType 並不常見。 XAML 風格/範本系統的設計是透過載入 XAML 作為資源,並且事先準備好控制範本的所有面向來使用。 很少有情況是你直到執行時才知道有關控制項和範本的資訊,因為需要在程式碼中建立或引用的 ControlTemplate 上設定 TargetType。

在程式碼中取得 TargetType 也不常見,但你可以這麼做來確認你從 XAML 載入的 ControlTemplate 是否與執行樹取得的控制目標相容。

Tip

如果你使用Microsoft .NET語言(C#)來編程,TypeName 類型會以 System.Type 形式投影。 使用 C# 程式設計時,通常會使用 typeof 運算子來取得 System.type 的參考,該類型是基於字串的型別名稱。

如果你用的是 C++/WinRT ,可以用 winrt::xaml_typename<T>() 輔助函式來建立 TypeName 物件。 更多細節及程式碼範例請參見 winrt::xaml_typename 函式範本 。

適用於

另請參閱