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 片段的字符串。
返回
创建的对象树的根对象。
示例
此示例根据调用 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,为返回值使用不同的目标。
- 剩余的主对象树必须支持要设置的相应属性。