語言

XamlReader.Load(String) 方法

定義

解析一個良好形成的 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 片段的字串。

傳回

Object

Platform::Object

IInspectable

建立物件樹的根物件。

範例

此範例由 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,並且使用不同的返回值目的地。
  • 剩下的主要物件樹必須支援一個合適的屬性來設定。

適用於

另請參閱