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

创建的对象树的根对象。

示例

此示例根据调用 Load 的 XAML 字符串创建单个 椭圆 。 然后,它将已创建但断开连接的 椭圆 连接到正在运行的 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 应用的 UI 的方式并行。 使用 XamlReader.Load 分析 XAML 输入会生成Windows 运行时对象的运行时对象树。 对象树提供了一种在运行时针对这些对象进行编程的方法,方法是遍历整个树的各个部分。

使用 XamlReader.Load 方法从 XAML 创建对象时,需要了解几个概念:

  • XAML 内容字符串必须定义单个根元素。
  • XAML 内容字符串必须是格式正确的 XML,并且必须是有效的 XAML。
  • XAML 内容必须定义默认 xmlns。 通常,这是由 标识http://schemas.microsoft.com/winfx/2006/xaml/presentation的Windows 运行时 XAML 词汇。
  • XAML 命名空间映射中引用的任何自定义程序集都必须对应用程序可用。
  • XAML 不应尝试指定 x:Class 属性,也不应包含事件处理程序的任何 XAML 定义的属性。
  • 不能在常规 XAML 名称范围中使用 FindName 来查找添加的运行时对象,但可以在所创建对象的特定 XAML 名称范围内搜索。 有关详细信息,请参阅 XAML 空间范围
  • 对象创建逻辑无法在运行时将加载的 XAML 与代码隐藏类集成。 如果要添加事件处理程序,必须在代码中执行此操作,方法是引用从 Load 结果的对象树结构中获取的对象,并使用特定于语言的语法附加处理程序 ((例如 +=) )。
  • 必须存在现有的 XAML 内容;不能替换整个内容树。 至少必须保留原始根元素,以便加载的 XAML 页面的应用模型含义保持活动状态。
  • 从 Load 创建的对象只能分配到主对象树中的一个位置。 如果要将从相同 XAML 创建的对象添加到应用程序主对象树的不同区域,则必须使用相同的输入字符串多次分析 XAML,为返回值使用不同的目标。
  • 剩余的主对象树必须支持要设置的相应属性。

适用于

另请参阅