WPF DataGridTemplateColumn общий шаблон? - PullRequest
6 голосов
/ 15 июня 2010

Привет! У меня есть сетка данных, в которой есть несколько столбцов таблицы шаблонов данных, которые все идентичны, за исключением того, что каждый из них имеет разный текст данных на панели стека шаблона.itemtemplate (как я сделал со списком), но не могу понять, как, если я что-то упустил.

1 Ответ

10 голосов
/ 15 июня 2010

Вы можете использовать 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}" для каждого столбца.

...