如何在代码中创建DataTemplate
(使用C#),然后向DataTemplate
添加控件?
<data:DataGrid.RowDetailsTemplate>
<DataTemplate>
<Border>
<Border Margin="10" Padding="10" BorderBrush="SteelBlue"
BorderThickness="3" CornerRadius="5">
<TextBlock Text="{Binding Description}" TextWrapping="Wrap"
FontSize="10">
</TextBlock>
</Border>
</Border>
</DataTemplate>
</data:DataGrid.RowDetailsTemplate>
我正在使用Sivlerlight。
答案 0 :(得分:9)
据我所知,在Silverlight中创建DataTemplate
的唯一方法是使用XamlReader。基本上你只需将XAML作为字符串传递给它,它会给你一个DataTemplate
。 Byron的解决方案适用于WPF,但Silverlight(据我所知)不支持FrameworkElementFactory
。
Scott Morrison: Defining Silverlight DataGrid Columns at Runtime
注意DataGridTemplateColumn
的选项#2。
答案 1 :(得分:4)
您可以使用TextBlock
添加FrameworkElementFactory
之类的控件。然后,您可以将TextBlock
添加到DataTemplate
的VisualTree中。像这样:
//Create binding object and set as mode=oneway
Binding binding = new Binding();
binding.Path = new PropertyPath("SomePropertyPathName");
binding.Mode = BindingMode.OneWay;
//get textblock object from factory and set binding
FrameworkElementFactory textElement = new FrameworkElementFactory(typeof(TextBlock));
textElement.SetBinding(TextBlock.TextProperty, binding);
//apply textblock to datatemplate
dataTemplate.VisualTree = textElement;
答案 2 :(得分:1)
微软在MSDN上发表了一篇很好的文章:“Data Templating Overview。”我会从那里开始。
更新:呃,抓一点。我读过你对“代码中”的要求。我会把链接留在这里,以免谁有人偶然发现这篇文章。