Как добавить несколько элементов управления в DataGridTemplateColumn файла datagrid с помощью wpf?

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

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

Когда я пытаюсь добавить второй элемент управления, я получаю сообщение об ошибке, указывающее, что свойство "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

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

<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 просто выглядит именно тем, что вы собираетесь делать.