题
我如何创建一个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
XAML使用的定义内容创建一个数据模板不是作为一个可设置的财产。它是特别的行为建立入XAML处理的一个数据模板对象单元。