FrameworkElement.Name 屬性

定義

取得或設定項目的識別名稱。 此名稱提供參考,讓事件處理常式程式碼等程式碼後置可以在 XAML 處理器在處理期間建構標記專案之後參考。

C#
[System.Windows.Localizability(System.Windows.LocalizationCategory.NeverLocalize)]
public string Name { get; set; }

屬性值

String

元素的名稱。 預設為空字串。

實作

屬性

範例

下列範例會在 Name 程式碼中設定 屬性,然後藉由呼叫 RegisterName ,將名稱註冊到新建立 NameScope 的 。 此處說明的技巧是使用分鏡腳本進行動畫處理的需求,因為分鏡腳本需要 Name 以 為目標,而且不能以物件參考為目標。

C#
//  
// Create a Rectangle
//
Rectangle myRectangle = new Rectangle();
myRectangle.Width = 200;
myRectangle.Height = 200;
myRectangle.Name = "myRectangle";
this.RegisterName(myRectangle.Name, myRectangle);

備註

這個屬性最常見的用法是在標記中指定 XAML 元素名稱做為屬性。

這個屬性基本上會提供 WPF 架構層級的便利屬性,以設定 XAML x:Name 指示詞

名稱在名稱範圍內必須是唯一的。 如需詳細資訊,請參閱 WPF XAML Namescopes

Name如果您在程式碼中建立元素並不常見,請取得 。 如果您在程式碼中已經有適當的參考,您可以直接在專案參考上呼叫方法和屬性,而且通常 Name 不需要 。 例外狀況是, Name 如果字串具有一些多載的意義,例如,如果在 UI 中顯示該名稱很有用。 Name如果也不建議從標記設定原始 Name 代碼後置,而且載入 XAML 之後變更 屬性並不會變更原始物件參考。 只有在剖析期間明確建立基礎名稱範圍時,才會建立物件參考。 您必須特別呼叫 RegisterName ,才能對已載入之專案的 屬性進行有效的變更 Name

有一個值得注意的案例,其中從程式碼設定 Name 很重要,就是註冊腳本將執行的專案名稱時,以便在執行時間參考它們。 您必須先具現化並指派 NameScope 實例,才能註冊名稱。 請參閱範例一節或 分鏡腳本概觀

從程式碼設定 Name 有有限的應用程式,但取得 Name 元素比較常見。 其中一個特定案例是,如果您的應用程式支援將頁面重載至應用程式的流覽模型,而且執行時間程式碼不一定是針對該頁面定義的程式碼後置。 公用程式方法 FindName 可從任何 FrameworkElement 取得,可以視需要在該專案的邏輯樹狀結構中尋找任何元素 Name ,視需要以遞迴方式搜尋樹狀結構。 或者,您可以使用 的 FindLogicalNode LogicalTreeHelper 靜態方法,它也會採用 Name 字串做為引數。

通常使用根項目 (WindowPage 例如,) 實作 介面 INameScope 。 此介面的實作預期會在其範圍內強制執行該名稱不明確。 定義此介面的根項目也會定義所有相關 API 的名稱範圍行為界限。

屬性 Name 也會做為其他進程的識別碼。 例如,WPF 自動化模型會作為 Name 用戶端和提供者的 AutomationId。

所使用的 Name 字串值有一些限制,如 XAML 規格所定義的基礎 x:Name 指示 詞所加加。 特別是, Name 開頭必須是字母或底線字元 (_) ,而且只能包含字母、數位或底線。 如需詳細資訊,請參閱 WPF XAML Namescopes

Name 是在中繼資料 () IsAnimationProhibited true 中無法產生動畫效果的相依性屬性之一,因為名稱本身對於以動畫為目標很重要。 資料系結 Name 是技術上可行的,但這是極不常見的案例,因為資料系結 Name 無法提供屬性的主要用途:為程式碼後置提供識別碼連接點。

相依性屬性資訊

識別碼欄位 NameProperty
設定為 的中繼資料屬性 true IsAnimationProhibited

適用於

產品 版本
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
Windows Desktop 3.0, 3.1, 5, 6, 7