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.
Возвращаемое значение
Корневой объект созданного дерева объектов.
Примеры
В этом примере создается один эллипс из строки XAML, вызывая Load. Затем он подключает созданный, но отключенный элемент Ellipse к коллекции Children элемента, который уже существовал в работающем приложении UWP. Наконец, пример снова обращается к Ellipse в расположении, куда он был добавлен с помощью запроса, и изменяет одно из его свойств.
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 обеспечивает поведение создания объектов, параллельное анализу XAML с помощью средства синтаксического анализа СРЕДА ВЫПОЛНЕНИЯ WINDOWS XAML и использования XAML для определения пользовательского интерфейса приложения UWP. При анализе входных данных XAML с помощью XamlReader.Load создаются деревья объектов времени выполнения среда выполнения Windows объектов. Дерево объектов предоставляет способ программирования для этих объектов во время выполнения путем обхода частей полного дерева.
При создании объектов из XAML с помощью метода XamlReader.Load важно понимать несколько понятий:
- Строка содержимого XAML должна определять один корневой элемент.
- Строка содержимого XAML должна иметь правильный формат XML, а также быть допустимой xaml.
- Содержимое XAML должно определять xmlns по умолчанию. Как правило, это среда выполнения Windows словарь XAML, определяемый по .
http://schemas.microsoft.com/winfx/2006/xaml/presentation
- Все пользовательские сборки, на которые ссылается сопоставление пространства имен XAML, уже должны быть доступны приложению.
- Xaml не должен пытаться указать атрибут x:Class или включать атрибуты, определенные XAML, для обработчиков событий.
- Вы не можете использовать FindName в общей области имен XAML, чтобы найти добавленный объект среды выполнения, но вы можете выполнить поиск в определенной области имен XAML для созданного объекта. Подробнее см. в разделе Области имен XAML.
- Логика создания объектов не может интегрировать загруженный КОД XAML с классами программной части во время выполнения. Если вы хотите добавить обработчики событий, это необходимо сделать в коде, ссылаясь на объекты, полученные из структуры дерева объектов результата Load, и используя синтаксис для присоединения обработчиков (например
+=
, ). - Должно быть существующее содержимое XAML; невозможно заменить все дерево содержимого. Необходимо по крайней мере сохранить исходный корневой элемент, чтобы оставаться активными последствия модели приложения для загруженной страницы XAML.
- Объект, созданный из load, можно назначить только одному расположению в основном дереве объектов. Если вы хотите добавить объекты, созданные из идентичного XAML, в разные области основного дерева объектов приложения, необходимо проанализировать XAML несколько раз, используя одну и ту же входную строку, используя разные назначения для возвращаемого значения.
- Оставшееся основное дерево объектов должно поддерживать соответствующее свойство для задания.