我正在使用WPF Datagrid,其中行将动态添加。 我可以动态地在选定的数据网格单元格中创建标签,文本框,按钮等wpf控件。
我需要将datagrid单元格内容控件显示到画布中。换句话说,行和列中的控件需要在画布上以表格格式显示。
有谁知道如何做到这一点?
答案 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>