C# Wpf数据网格重复列

C# Wpf数据网格重复列,c#,wpf,datagrid,C#,Wpf,Datagrid,我想要一个datagrid,其中包含重复的列,如下图所示 这只是一个数据网格,colums是重复的。 我们如何使用wpf windows datagrid做到这一点 谢谢,您可以通过手动向数据网格添加重复列来实现这一点。标题不需要是唯一的: <DataGrid ItemsSource="{Binding Path=Contacts}" AutoGenerateColumns="False"> <DataGrid.Columns> <Data

我想要一个datagrid,其中包含重复的列,如下图所示

这只是一个数据网格,colums是重复的。 我们如何使用wpf windows datagrid做到这一点


谢谢,

您可以通过手动向
数据网格添加重复列来实现这一点。标题不需要是唯一的:

<DataGrid ItemsSource="{Binding Path=Contacts}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="header1" Binding="{Binding Name}"/>
        <DataGridTextColumn Header="header2" Binding="{Binding Age}"/>
        <DataGridTextColumn Header="header1" Binding="{Binding Name}"/>
        <DataGridTextColumn Header="header2" Binding="{Binding Age}"/>
    </DataGrid.Columns>
</DataGrid>

您不能水平放置3个(或更多)数据网格,并使用分页绑定数据。。我的意思是前10(n)条记录到网格1,接下来10(n)条记录到网格2,就像wise一样

您可以使用LINQ中可用的跳过获取方法进行分页

record.Skip((page - 1)*pageSize).Take(pageSize);

我试着用下面的方法解决你的问题

列中必须定义一定数量的数据。但是这几个,我们希望他们在
DataGrid
中定义一个重复列

假设它是已知的,至少大约是列和行的数量。然后是要在
DataGrid
中设置的数据
cube
。下面是我的例子和我的评论

XAML

<Window x:Class="DataGridDynamicAddCol.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525" 
    WindowStartupLocation="CenterScreen" ContentRendered="Window_ContentRendered">

    <Grid>
        <DataGrid Name="DynamicColumnDataGrid" Loaded="DynamicColumnDataGrid_Loaded" AutoGenerateColumns="False"/>
    </Grid>
</Window>
输出

重复次数-
3

重复次数-
2

如果指定重复次数大于多维数据集中的重复次数,则会看到一张图片:

这是很合乎逻辑的,因为没有相关数据


注意
:要使用
绑定
a
ViewModel
,您需要确定适当的列表/集合,将它们设置为元素,并将它们组合到单个数据立方体中。在我的示例中,是静态数据,但您需要确定数据源和数据量,然后将它们放在一边,并将它们放在数据立方体中。我认为,如果没有数据立方体,就很难实现这种类型的东西(我尝试了不同的选项,使用
转换器
直接从数组绑定
,等等)。

我不太确定您的要求,但如果我是正确的,您希望用不同的数据重复“相同”列


你可以这样做,但不是以你认为的方式。这就是拥有视图模型的目的,以一种让视图能够读取数据的方式封装数据。实际上,您需要的是具有相同标题和样式的列,包括其项目,但绑定到视图模型中的不同属性。

您可以执行以下操作:

<Window.Resources>
    <Controls:DataGrid x:Key="YourDataGrid" AutoGenerateColumns="False" ItemsSource="{Binding }">
        <Controls:DataGrid.Columns>
            <Controls:DataGridTextColumn Header="FirstName" Binding="{Binding Path=FirstName}" IsReadOnly="True"/>
            <Controls:DataGridTextColumn Header="SecondName" Binding="{Binding Path=LastName}" IsReadOnly="True"/>   
        </Controls:DataGrid.Columns>
</Controls:DataGrid>



重复列中的数据是否不同?如果是,那么数据源为每列一个?还是没有?只有一个数据源。是重复列中的数据不同。是否使用mvvm和wpf绑定?是,我使用mvvm和wpf绑定,但它绑定相同的数据。如果你仔细看我的例子,你会发现每重复一列的数据是不一样的。听起来几乎像是一个需要包装面板的工作。对不起,我没有注意到这些值是不同的。通过查看您的图片,我认为您试图做的是在第一组列下有第1-8行,在第二组列下有第9-16行,等等?行数是固定的吗?它总是3的倍数吗?是的,我们可以这样说。但并不总是3。它必须是我想要多少谢谢,我会检查它。如果我们可以使用viewmodel中的绑定,我们如何应用它?这取决于您的数据和来源。静态或动态数据。这个例子是静态的。在我的示例中,
Binding
循环遍历数据,并为每个头插入数组的值。标题名称与
绑定的值的名称匹配。
<Window.Resources>
    <Controls:DataGrid x:Key="YourDataGrid" AutoGenerateColumns="False" ItemsSource="{Binding }">
        <Controls:DataGrid.Columns>
            <Controls:DataGridTextColumn Header="FirstName" Binding="{Binding Path=FirstName}" IsReadOnly="True"/>
            <Controls:DataGridTextColumn Header="SecondName" Binding="{Binding Path=LastName}" IsReadOnly="True"/>   
        </Controls:DataGrid.Columns>
</Controls:DataGrid>
 <StackPanel Orientation="Horizontal">
    <ContentControl Content="{StaticResource YourDataGrid}" DataContext="{Binding Path=FirstDataContext}"></ContentControl>
    <ContentControl Content="{StaticResource YourDataGrid}" DataContext="{Binding Path=SecondDataContext}"></ContentControl>
</StackPanel>