WPF DataGridTemplateColumn shared template?

前端 未结 1 1868
梦毁少年i
梦毁少年i 2021-01-12 20:15

Hi I have a datagrid that has a number of datagridtemplate columns that are all identical apart from they each have a different datacontext on the template\'s stackpanel.

相关标签:
1条回答
  • 2021-01-12 20:48

    You could use a ContentPresenter to instantiate a DataTemplate for each column:

    <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>
    

    If the elements of Times are all the same type, you could also do <DataTemplate DataType={x:Type YourType}> and then you wouldn't need to specify ContentTemplate="{StaticResource ColumnTemplate}" on each column.

    0 讨论(0)
提交回复
热议问题