您好,我有一个datagrid,它有许多datagridtemplate列,除了每个列在模板的栈面板上都有一个不同的datacontext之外,它们都是相同的。
<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>我想让每一列使用一个特定的项目模板(就像我对列表框所做的那样),但似乎看不到如何使用,除非我遗漏了一些东西。
发布于 2010-06-15 20:56:50
您可以使用ContentPresenter为每一列实例化一个DataTemplate:
<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}"。
https://stackoverflow.com/questions/3044106
复制相似问题