XamlReader.Load(String) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
解析一個良好形成的 XAML 片段,建立對應的物件樹,並回傳物件樹的根節點。
public:
static Platform::Object ^ Load(Platform::String ^ xaml);
static IInspectable Load(winrt::hstring const& xaml);
public static object Load(string xaml);
function load(xaml)
Public Shared Function Load (xaml As String) As Object
參數
- xaml
-
String
Platform::String
winrt::hstring
包含有效 XAML 片段的字串。
傳回
建立物件樹的根物件。
範例
此範例由 XAML 字串建立單一 橢 圓,呼叫 Load。 接著,它會將已建立但已斷開的 Ellipse 連接到已存在於執行中的 UWP 應用程式中元素的 Children 集合。 最後,範例會透過查詢再次存取該 橢圓 ,並更改其屬性之一。
string xaml =
"<Ellipse Name=\"EllipseAdded\" Width=\"300.5\" Height=\"200\"
Fill=\"Red\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"/>";
object ellipse = XamlReader.Load(xaml);
//stackPanelRoot is the visual root of a Page in existing XAML markup already loaded by the appmodel
stackPanelRoot.Children.Add(ellipse as UIElement);
//walk the tree using XLinq result and cast back to a XAML type to set a property on it at runtime
var result = (from item in stackPanelRoot.Children
where (item is FrameworkElement)
&& ((FrameworkElement) item).Name == "EllipseAdded"
select item as FrameworkElement).FirstOrDefault();
((Ellipse) result).Fill = new SolidColorBrush(Colors.Yellow);
備註
XamlReader 提供物件建構行為,類似於 Windows 執行階段 XAML 解析器解析 XAML 的方式,以及 XAML 用於定義 UWP 應用程式的使用者介面。 使用 XamlReader.Load 解析 XAML 輸入時,會產生 Windows 執行階段 物件的執行時物件樹狀結構。 物件樹提供了一種在執行時對這些物件進行程式設計的方法,透過走遍整個樹的部分。
當你使用 XamlReader.Load 方法從 XAML 建立物件時,有幾個重要的概念需要理解:
- XAML 內容字串必須定義單一根元素。
- XAML 內容字串必須是良好格式的 XML,且必須是有效的 XAML。
- XAML 內容必須定義預設的 xmlns。 通常這是 Windows 執行階段 XAML 的詞彙表,依
http://schemas.microsoft.com/winfx/2006/xaml/presentation。 - XAML 命名空間映射中所參考的任何自訂組件必須已經可供應用程式使用。
- XAML 不應嘗試指定 x:Class 屬性,或包含任何 XAML 定義的事件處理元屬性。
- 你不能在一般的 XAML 名稱範圍裡用 FindName 來找新增的執行時物件,但你可以在該物件的特定 XAML 名稱範圍內搜尋。 如需詳細資訊,請參閱 XAML 名稱範圍。
- 物件建立邏輯無法在執行時將載入的 XAML 與程式碼背後的類別整合。 若想新增事件處理器,必須在程式碼中引用從 Load 結果物件樹結構中取得的物件,並使用語言專用語法附加處理器(例如
+=)。 - 必須已有 XAML 內容;你無法替換整個內容樹。 你至少必須保留原始根元素,這樣載入的 XAML 頁面對應用程式模型的影響才能保持活躍。
- 從 Load 建立的物件只能指派到主要物件樹中的一個位置。 如果你想將由相同 XAML 建立的物件加入應用程式主要物件樹的不同區域,你必須用同一個輸入字串多次解析 XAML,並且使用不同的返回值目的地。
- 剩下的主要物件樹必須支援一個合適的屬性來設定。