首先我要帮大家引入一个对象 他位置与 System.Windows.Markup; 命名空间下. 这里有一个静态类XamlReader,以及read方法 我们就要用他来创建我们的usercontrol.b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
    // Summary:b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
    //    Provides a XAML processor engine for parsing XAML and creating correspondingb!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
    //    Silverlight object trees.b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
    public static class XamlReaderb!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
    {b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
        // Summary:b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
        //    Parses a well-formed XAML fragment and creates a corresponding Silverlightb!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
        //    object tree, and returns the root of the object tree.b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
        //b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
        // Parameters:b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
        //  xaml:b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
        //    A string that contains a valid XAML fragment.b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
        //b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
        // Returns:b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
        //    The root object of the Silverlight object tree.b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
        public static object Load(string xaml);
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
了解这个对象后给大家一个实例看看怎么用吧~ 还是很简单的,b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
1. 我们创建一个类 自然就是我们的 usercontrol 了 继承自 control b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
2. 我们要把我们模板的 Xmal 以string 的形式保存写入程序中b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
3. 我们要在构造函数中载入这些 XAMLb!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
4. 我们在重载onapplytemplate() 方法中声明创建的对象XMAL代码.b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
以下是我要写入的Xaml;b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
public class MyImage : Controlb!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
    {b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
        Image _myImage = null;b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
        private const string _contentTemplateb!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
            = "<ControlTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"" +b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
              "xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">" +b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
              "<Image x:Name=\"sonicImage\" Source=\"space.jpg\"></Image>" +b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
              "</ControlTemplate>";b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
    }
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
构造函数b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
public MyImage()b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
        {b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
            Template = (ControlTemplate)XamlReader.Load(_contentTemplate);b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
            ApplyTemplate();b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
        }
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
重载onapplytemplateb!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
        public override void OnApplyTemplate()b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
        {b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
            _myImage = (Image)GetTemplateChild("sonicImage");b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
        }
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>
b!,á¸êv8www.netcsharp.cnÆ љ¬¡é>