将wpf datagrid行列数据(控件)显示到画布中

时间:2012-07-20 13:50:01

标签: wpf datagrid

我正在使用WPF Datagrid,其中行将动态添加。 我可以动态地在选定的数据网格单元格中创建标签,文本框,按钮等wpf控件。

我需要将datagrid单元格内容控件显示到画布中。换句话说,行和列中的控件需要在画布上以表格格式显示。

有谁知道如何做到这一点?

1 个答案:

答案 0 :(得分:1)

我不确定您要问的是什么,但您可以使用DataGridTemplateColumn指定将某个项目绘制为Canvas

<DataGridTemplateColumn Header="ColumnHeader">
    <DataGridTemplateColumn.CellTemplate>
         <DataTemplate>
            <Canvas>
                <Label ... />
                <TextBox ... />
                <Button ... />
            </Canvas>
         </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

如果您希望将项目放在Canvas之外的不相关DataGrid上,那么这是一个不同的故事,因为DataGrid UI组件存在层次结构,而您不能轻松地将项目置于该层次结构之外。

如果是这种情况,我建议您切换到使用ItemsControl

<ItemsControl ItemsSource="{Binding MyCollection}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>

    <ItemsControl.ItemContainerStyle>
        <Style>
            <Setter Property="Canvas.Left" Value="{Binding X}" />
            <Setter Property="Canvas.Top" Value="{Binding Y}" />
        </Style>
    </ItemsControl.ItemContainerStyle>
</ItemsControl>