如何在代码中定义DataTemplate?

发布于 2024-08-28 07:43:33 字数 632 浏览 7 评论 0原文

如何在代码中(使用 C#)创建 DataTemplate,然后向该 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。

How can I create a DataTemplate in code (using C#) and then add a control to that 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>

I am using Sivlerlight.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

吐个泡泡 2024-09-04 07:43:33

据我所知,在 Silverlight 中创建 DataTemplate 的唯一方法是使用 XamlReader。基本上,您只需将 XAML 作为字符串传递给它,它就会返回一个 DataTemplate。 Byron 的解决方案适用于 WPF,但 Silverlight(据我所知)不支持 FrameworkElementFactory

Scott Morrison:定义运行时的 Silverlight DataGrid 列

请注意 DataGridTemplateColumn 的选项 #2。

As far as I know, the only way to create a DataTemplate in Silverlight is to use XamlReader. Basically you would just pass it the XAML as a string and it will give you back a DataTemplate. Byron's solution would apply to WPF but Silverlight (to the best of my knowledge) does not support FrameworkElementFactory.

Scott Morrison: Defining Silverlight DataGrid Columns at Runtime

Take note of option #2 for DataGridTemplateColumn.

口干舌燥 2024-09-04 07:43:33

您可以使用 FrameworkElementFactory 添加诸如 TextBlock 之类的控件。然后,您可以将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;

You can add a control like a TextBlock using a FrameworkElementFactory. Then you can add the TextBlockto the VisualTree of the DataTemplate. Like so:

//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;
梦途 2024-09-04 07:43:33

Microsoft 在 MSDN 上有一篇很好的文章:“数据模板概述。”我会从那里开始。

更新:呃,从头开始。我阅读了您对“代码中”的要求。我将把链接留在这里,供任何可能偶然发现这篇文章的人使用。

Microsoft has a good article over at MSDN: "Data Templating Overview." I would start there.

Update: Eh, scratch that. I read over your requirement for "in code." I'll just leave the link here for whoever might stumble upon this post.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文