首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF DataGridTemplateColumn共享模板?

WPF DataGridTemplateColumn共享模板?
EN

Stack Overflow用户
提问于 2010-06-15 17:52:04
回答 1查看 3.4K关注 0票数 6

您好,我有一个datagrid,它有许多datagridtemplate列,除了每个列在模板的栈面板上都有一个不同的datacontext之外,它们都是相同的。

代码语言:javascript
复制
<toolkit:DataGridTemplateColumn Header="Col 1">
                <toolkit:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <StackPanel DataContext="{Binding Times[0]}">
                        <!-- the structure that I want to extract to a template -->
                        </StackPanel>
                    </DataTemplate>
                </toolkit:DataGridTemplateColumn.CellTemplate>
</toolkit:DataGridTemplateColumn>

<toolkit:DataGridTemplateColumn Header="Col 2">
                <toolkit:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <StackPanel DataContext="{Binding Times[1]}">
                        <!-- the same structure here -->
                        </StackPanel>
                    </DataTemplate>
                </toolkit:DataGridTemplateColumn.CellTemplate>
</toolkit:DataGridTemplateColumn>

我想让每一列使用一个特定的项目模板(就像我对列表框所做的那样),但似乎看不到如何使用,除非我遗漏了一些东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-15 20:56:50

您可以使用ContentPresenter为每一列实例化一个DataTemplate:

代码语言:javascript
复制
<toolkit:DataGrid.Resources>
    <DataTemplate x:Key="ColumnTemplate">
        <StackPanel>
            <!-- the structure that I want to extract to a template -->
        </StackPanel>
    </DataTemplate>
</toolkit:DataGrid.Resources>
<toolkit:DataGrid.Columns>
    <toolkit:DataGridTemplateColumn Header="Col 1">
        <toolkit:DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <ContentPresenter ContentTemplate="{StaticResource ColumnTemplate}" Content="{Binding Times[0]}"/>
            </DataTemplate>
        </toolkit:DataGridTemplateColumn.CellTemplate>
    </toolkit:DataGridTemplateColumn>
    <toolkit:DataGridTemplateColumn Header="Col 2">
        <toolkit:DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <ContentPresenter ContentTemplate="{StaticResource ColumnTemplate}" Content="{Binding Times[1]}"/>
            </DataTemplate>
        </toolkit:DataGridTemplateColumn.CellTemplate>
    </toolkit:DataGridTemplateColumn>
</toolkit:DataGrid.Columns>

如果Times的元素都是相同类型的,那么您也可以执行<DataTemplate DataType={x:Type YourType}>,这样就不需要在每一列上都指定ContentTemplate="{StaticResource ColumnTemplate}"

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3044106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档