Как добавить несколько элементов управления в DataGridTemplateColumn таблицы данных, используя wpf? - PullRequest
11 голосов
/ 20 января 2011

У меня есть несколько случаев, когда я хотел бы иметь несколько элементов управления в одном столбце в сетке данных.

Например, у меня есть набор данных, который содержит изображения с соответствующим описанием, источником изображения, отметкой времени, геотегом,и т.д. Я хотел бы отобразить эту информацию с миниатюрным изображением в одном столбце, а большинство данных - в текстовом поле или на ярлыке.Для других наборов данных, которые мне нужны, требуется текстовое поле / флажок или текстовое поле / комбинированный список.

Когда я пытаюсь добавить второй элемент управления, я получаю сообщение об ошибке, что свойство "VisualTree" установлено несколько раз.

<DataGridTemplateColumn Header="Data" Width="100">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Label Name="Description" Content="{Binding Desc}"></Label>
            <Label Name="Camera" Content="{Binding Camera}"></Label>
        </DataTemplate>      
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

1 Ответ

28 голосов
/ 20 января 2011

Я думаю, что DataTemplate должен иметь только один элемент - поэтому вы должны использовать Panel для хранения элементов, скажем что-то вроде этого:

<DataGridTemplateColumn Header="Data" Width="100">
    <DataGridTemplateColumn.CellTemplate>
         <DataTemplate>
             <StackPanel Orientation="Horizontal">
                 <Label Name="Description" Content="{Binding Desc}"></Label>
                 <Label Name="Camera" Content="{Binding Camera}"></Label>
             </StackPanel>
         </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn> 

Вы, конечно, можете использовать WrapPanel, Grid или что-нибудьиначе вам нравится - StackPanel, кажется, является тем, что вы собираетесь.

...