【问题标题】:Spanning a Record Over Multiple Rows in WPF Toolkit's DataGrid在 WPF 工具包的 DataGrid 中跨越多行记录
【发布时间】:2010-07-05 17:35:21
【问题描述】:

是否可以设置 WPF Toolkit 的 DataGrid 样式,以便数据记录可以跨越多行。 Example screen shot 来自商业控制。

谢谢,

【问题讨论】:

    标签: wpf wpfdatagrid


    【解决方案1】:

    ListView 无法使用工具包 DataGrid 或 GridView,不。

    但是您可能对自己的实现很幸运,因为我最近发现您可以使用 GridViewHeaderRowPresenter (MSDN reference),将 Columns 属性设置为您想要的列:这将给你一个标题行。

    然后您可以使用GridViewRowPresenter (MSDN reference),将其附加到相同的Columns 集合中,瞧,您的行和标题中的列将被链接(调整标题大小,列更改)。

    这里有一个很好的例子:

    http://msdn.microsoft.com/en-us/library/ms752313.aspx

    为了获得堆叠效果,您可以创建ListViewListBox,并为每个项目输出一对垂直堆叠的GridViewRowPresenter 控件,每个绑定到单独的列集合。然后在您自己的自定义标题(就在控件上方)中,您将使用一对GridViewHeaderRowPresenter 控件执行相同的操作。

    然后您也可以添加您想要的任何其他位,例如它们在示例屏幕截图中的文本/标签。

    没有理由不这样做。它不是预先构建的解决方案,但可以通过干净的编码实现,它不是黑客,您可以完全控制它的外观和工作方式!添加排序等也很容易,MSDN 也有一个例子。

    希望对您有所帮助 - 有关此详细信息的任何其他问题,请在此处添加评论!

    【讨论】:

      【解决方案2】:

      看起来该屏幕截图中的控件通过将图片右侧每一列中的单元格划分为多行来创建行跨度的错觉。也许您可以通过相同的方式实现您正在寻找的行跨度效果。

      <tk:DataGrid AutoGenerateColumns="False">
          <tk:DataGrid.Columns>
              <tk:DataGridTextColumn Header="ID" Binding="{Binding ID}" />
              <tk:DataGridTemplateColumn Header="Photo">
                  <tk:DataGridTemplateColumn.CellTemplate>
                      <DataTemplate>
                          <Image Source="{Binding Photo}" />
                      </DataTemplate>
                  </tk:DataGridTemplateColumn.CellTemplate>
              </tk:DataGridTemplateColumn>
              <tk:DataGridTemplateColumn>
                  <tk:DataGridTemplateColumn.Header>
                      <Grid>
                          <Grid.RowDefinitions>
                              <RowDefinition />
                              <RowDefinition />
                          </Grid.RowDefinitions>
                          <TextBlock Grid.Row="0">FirstName</TextBlock>
                          <TextBlock Grid.Row="1">LastName</TextBlock>
                      </Grid>
                  </tk:DataGridTemplateColumn.Header>
                  <tk:DataGridTemplateColumn.CellTemplate>
                      <DataTemplate>
                          <Grid>
                              <Grid.RowDefinitions>
                                  <RowDefinition />
                                  <RowDefinition />
                              </Grid.RowDefinitions>
                              <TextBlock Grid.Row="0" Text="{Binding FirstName}" />
                              <TextBlock Grid.Row="1" Text="{Binding LastName}" />
                          </Grid>
                      </DataTemplate>
                  </tk:DataGridTemplateColumn.CellTemplate>
              </tk:DataGridTemplateColumn>
          </tk:DataGrid.Columns>
      </tk:DataGrid>
      

      【讨论】:

        猜你喜欢
        • 2011-04-19
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        • 2013-04-08
        • 2010-12-28
        • 2010-12-19
        • 1970-01-01
        相关资源
        最近更新 更多