DataGridTemplateColumn Column Span in DataGrid WPF

纵然是瞬间 提交于 2021-02-19 03:05:11

问题


I am making UI as shown in picture below.

It is a DataGrid, Itemsource is bound to a List. I cannot set ColumnSpan for the TextBox. First, I tried it with a UserControl but I couldn't fix DataGridTemplateColumn Header, then I tried DataGridTemplateColumn.CellTemplate but couldn't set the ColumnSpan.

Is there any way/method to make this kind of Datagrid?

Thank you in advance.


回答1:


There is no ColumnSpan in the DataGrid, like in the normal Grid.

To get this kind of layout you have 3 choices, all with heavy drawbacks unfortunately.

1 merge cells

Use the merge event to merge cells together in code behind. See a guide to this here This requires a large chunk of code behind coding to get this right with your layout. So I would really advise against this.

2 RowDetails

Use the build in RowDetails. This doesn't get the layout exactly like your's but is the easiest and closest build in function to your requirement.

It will look something like this:

It's easy to configure: Set: RowDetailsVisibilityMode="Visible" in the DataGrid XAML. And define your template for the row:

<DataGrid.RowDetailsTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding Desc}" Background="LightGray"/>
    </DataTemplate>
</DataGrid.RowDetailsTemplate>

[+] All DataGrid functions will work: Sorting, Adding Rows, Resizing ...

[-] The Details section span over the whole row.

See this tutorial about what you can do with row details.

3 Hack something together

With templates and code behindz. Some resources that might help you:

  • Override Row Template
  • Build a custom cell template
  • DataGrid in general



回答2:


I have come with other solution using Grids, List and UserControl. In a simple way, I made it as following:



来源:https://stackoverflow.com/questions/39071767/datagridtemplatecolumn-column-span-in-datagrid-wpf

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!