在代码中创建Silverlight DataTemplate

Nic*_*ell 28 silverlight

如何在代码中创建silverlight数据模板?我见过很多WPF的例子,但Silverlight没有.

编辑:这是我现在使用的代码,基于以下圣地亚哥的回答.

public DataTemplate Create(Type type)
{
  return (DataTemplate)XamlReader.Load(
          @"<DataTemplate
            xmlns=""http://schemas.microsoft.com/client/2007"">
            <" + type.Name + @" Text=""{Binding " + ShowColumn + @"}""/>
            </DataTemplate>"
   );
}
Run Code Online (Sandbox Code Playgroud)

这非常好用,并允许我动态更改绑定.

小智 39

虽然您无法以编程方式创建它,但您可以从代码中的XAML字符串加载它,如下所示:

    public static DataTemplate Create(Type type)
    {
        return (DataTemplate) XamlReader.Load(
            @"<DataTemplate
                xmlns=""http://schemas.microsoft.com/client/2007"">
                <" + type.Name + @"/>
              </DataTemplate>"
          );
    }
Run Code Online (Sandbox Code Playgroud)

上面的代码片段创建了一个包含单个控件的数据模板,该控件可以是包含所需内容的用户控件.


小智 11

我对这段代码有一些问题,得到的元素不是异常.仅供参考,我需要将我的名称空间包含在DataTemplate中...

private DataTemplate Create(Type type)
        {
            string xaml = @"<DataTemplate 
                xmlns=""http://schemas.microsoft.com/client/2007""
                xmlns:controls=""clr-namespace:" + type.Namespace + @";assembly=" + type.Namespace + @""">
                <controls:" + type.Name + @"/></DataTemplate>";
            return (DataTemplate)XamlReader.Load(xaml);
        }
Run Code Online (Sandbox Code Playgroud)

  • **程序集名称!=名称空间名称**虽然. (4认同)