用代码创建Silverlight DataTemplate
时间:2020-03-05 18:52:22 来源:igfitidea点击:
如何在代码中创建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>" ); }
这确实非常好用,并且允许我随时更改绑定。
解决方案
回答
来自MSDN的引用:
The XAML usage that defines the content for creating a data template is not exposed as a settable property. It is special behavior built into the XAML processing of a DataTemplate object element.
回答
尽管无法以编程方式创建它,但是可以从XAML字符串中以如下代码加载它:
public static DataTemplate Create(Type type) { return (DataTemplate) XamlReader.Load( @"<DataTemplate xmlns=""http://schemas.microsoft.com/client/2007""> <" + type.Name + @"/> </DataTemplate>" ); }
上面的代码段创建了一个包含单个控件的数据模板,该控件可以是具有所需内容的用户控件。
回答
我在这段代码中遇到了一些问题,使元素没有出现异常。仅供参考,是我需要在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); }