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.Public 和 TypeAttributes.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 指示詞 控制。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應