我如何创建一个silverlight数据的模板,在代码?我已经看到大量的例子WPF,但没有什么力。

编辑:这里的代码,我在使用这为,基于上述的回答是从Santiago如下。

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

这工作真的很好,让我改变的结合。

有帮助吗?

解决方案

虽然不能通过程序创造了它,你可以载荷从一个XAML串这样的代码:

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

该段上创建了一个数据模板包含一个单一的控制,这可能是一个用户控制的内容需要。

其他提示

我有几个问题与这样的代码,获得件不foung例外情况。仅供参考,它是我需要我的namesspace包括在数据模板...

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);
        }

是的,Silverligt4超过WPF目前的版本。当你加入一个模板,作为一种资源即因为我没有 我加入了一个用户控件模板应用程序。xaml MergedResources之间的资.在XAML如果标签的实施IDictionary你可以用x:关键属性。喜欢这样

   <ResourceDictionary>
    <DataTemplate x:Key="TextBoxEditTemplate">
    <Some user control x:Name="myOwnControl" />
    </DataTemplate>
   </ResourceDictionary>

Ok!你可能达到你的模板,通过编码, 应用程序。电流。资源["TextBoxEditTemplate"] 另一方面一些方法寻找成员的这个模板不会的工作。除了这一数据模板没有实现IDictionary所以你不能分配x:关键性的项目,在这个数据模板.作为myOwnControl在例子。

没有xaml前silverlight有一些限制,关于建立完全动态的代码隐藏DataTemplates.甚至它的工作WPF.

无论如何最佳解决方案,通过这一点是创造停脚本用的数据模板,你可以将一些值元数据模板脚本。我们创造了我们自己的usercontrols有的一些属性与DependencyObjectProperty...

最后,如果你对象没有继承,即不MyControl:用户控件你可以继承 MyObject:。 通过这种方式可以达到你的目通过调用等应用程序。电流。资源。FirstChilderen...

FindName仅在WPF

引文从MSDN:

XAML使用的定义内容创建一个数据模板不是作为一个可设置的财产。它是特别的行为建立入XAML处理的一个数据模板对象单元。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top