Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

CreateFromXaml

[This documentation is for preview only, and is subject to change in later releases. Blank topics are included as placeholders.]

Creates XAML content dynamically.

retval = silverlightObject.content.CreateFromXaml(xamlContent)
-or-
retval = silverlightObject.content.CreateFromXaml(xamlContent, createNameScope)

xamlContent

string

The XAML content to add to the existing Silverlight object hierarchy.

createNameScope

Boolean

Determines whether to create x:Name references in XAML content that do not conflict with other named elements. The createNameScope parameter is optional, and its value defaults to false if it is not specified.

Type: object

An object reference if the XAML content was successfully created; otherwise, null.

XamlReader.Load is the nearest equivalent. Note that XamlReader.Load has different namescope behavior. See Using XamlReader.Load.

This method is available on the content subobject of a Silverlight plug-in instance.

The input for CreateFromXaml must meet certain requirements. See XAML and XAML-Related Concepts in the JavaScript API for Silverlight.

Caution note Caution:

To guard your Silverlight-based application against security attacks, you should never pass in untrusted XAML to the CreateFromXaml method. For example, untrusted XAML could contain a mock-up interface that mirrors a legitimate site, leading to a spoofing security threat. Additionally, XAML potentially contains references to script event handlers. Adding untrusted XAML to the live tree could result in unintended execution of script. Always validate that XAML passed in to CreateFromXaml is from a source that your Silverlight-based application considers trusted.

CreateFromXaml , Name properties assigned in the content provided for CreateFromXaml, and run-time FindName calls all exist in a relationship that is governed by the concepts of an object tree and one or more XAML namescopes within that object tree. For more information, see XAML and XAML-Related Concepts in the JavaScript API for Silverlight.

The following JavaScript example shows how to add a TextBlock child object to an existing Canvas object.

// Create the MouseLeftButtonUp event handler for the root Canvas object.
function onMouseLeftButtonUp(sender, eventArgs)
{
    // Retrieve a reference to the plug-in.
    var plugin = sender.getHost();
    
    // Define a XAML fragment and create it.
    var xamlFragment = '<TextBlock Canvas.Top="200" Text="Click for more info..." />';
    textBlock = plugin.content.createFromXaml(xamlFragment, false);

    // Add the XAML fragment as a child of the root Canvas object.
    sender.children.add(textBlock);
}

If you want to use the x:Name attribute value as part of your XAML fragment, you will need to provide the XAML namespace reference as part of the XAML content. For example, for the previous XAML fragment example to use the x:Name attribute value, you would need to rewrite the example as follows:

// Define a XAML fragment and create it.
    var xamlFragment = '<TextBlock xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" ';
       xamlFragment += 'x:Name="myCanvas" Canvas.Top="200" Text="Click for more info" />';

    textBlock = plugin.content.createFromXaml(xamlFragment, false);

In the XAML fragment, if you use a Name or x:Name attribute value that already identifies an object in the Silverlight object tree, and createNameScope is false, an error is raised when you invoke the Add method by using the generated object. Set createNameScope to true if you want to create multiple instances of elements without causing naming conflicts.

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

Show:
© 2014 Microsoft. All rights reserved.