x:FieldModifier 指示詞

修改 XAML 編譯行為,讓具名物件參考的欄位以存取權定義 TypeAttributes.Public ,而不是 TypeAttributes.NotPublic 預設行為。

XAML Attribute Usage

<object x:FieldModifier="Public".../>

XAML 值

Description
公開 您傳遞的確切字串會 TypeAttributes.PublicTypeAttributes.NotPublic 根據所使用的程式碼後置程式設計語言而有所不同。 請參閱<備註>。

相依性

如果 XAML 生產環境使用 x:FieldModifier 任何位置,該 XAML 生產環境的根項目必須宣告 x:Class 指示詞

備註

x:FieldModifier 與宣告類別或其成員的一般存取層級無關。 只有在處理屬於 XAML 生產環境的特定 XAML 物件時,才與 XAML 處理行為相關,並成為應用程式物件圖形中可能可存取的物件。 根據預設,這類物件的欄位參考會保持私用,這可防止控制項取用者直接修改物件圖形。 相反地,控制項取用者應該使用程式設計模型所啟用的標準模式來修改物件圖形,例如取得版面配置根目錄、子專案集合、專用公用屬性等等。

屬性的值 x:FieldModifier 會因程式設計語言而異,其用途在特定架構中可能會有所不同。 要使用的字串取決於每個語言如何實作其 CodeDomProvider 和 型別轉換器,以定義 TypeAttributes.PublicTypeAttributes.NotPublic 的意義,以及該語言是否區分大小寫。

  • 針對 C#,要傳遞至指定之 TypeAttributes.Public 字串為 public

  • 針對 Microsoft Visual Basic .NET,要傳遞以指定 TypeAttributes.Public 的字串為 Public

  • 針對 C++/CLI,目前沒有 XAML 的目標;因此,要傳遞的字串未定義。

您也可以在 C# Friend 中,在 Visual Basic 中指定 TypeAttributes.NotPublicinternal ,但指定 TypeAttributes.NotPublic 是不尋常的,因為 NotPublic 行為已經是預設值。

TypeAttributes.NotPublic 是預設行為,因為編譯 XAML 的元件外部的程式碼不常需要存取 XAML 建立的專案。 WPF 安全性架構與 XAML 編譯行為不會宣告將專案實例儲存為公用的欄位,除非您特別將 設定 x:FieldModifier 為允許公用存取。

x:FieldModifier僅與具有 x:Name 指示詞 的專案 相關,因為該名稱是用來在欄位為公用之後參考欄位。

根據預設,根項目的部分類別是公用的;不過,您可以使用 x:ClassModifier 指示詞 將其設為非公用 x:ClassModifier 指示詞 也會影響根項目類別實例的存取層級。 您可以將 和 x:FieldModifier 放在 x:Name 根項目上,但這只會建立根項目的公用欄位複本,而真正的根項目類別存取層級仍由 x:ClassModifier 指示詞 控制。

另請參閱