13

我有几个实例,我希望在数据网格的单个列中有多个控件。

例如,我有一个数据集,其中包含具有匹配描述、图像源、时间戳、地理标签等的图像。我想在一列中显示此信息,并在文本框或标签中显示大部分数据。我拥有的其他数据集需要文本框/复选框或文本框/组合框。

当我尝试添加第二个控件时,我收到一个错误报告,指出属性“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>
4

1 回答 1

30

我相信 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 似乎正是您想要的。

于 2011-01-20T06:19:02.820 回答