C# Wpf数据网格重复列
我想要一个datagrid,其中包含重复的列,如下图所示 这只是一个数据网格,colums是重复的。 我们如何使用wpf windows datagrid做到这一点C# Wpf数据网格重复列,c#,wpf,datagrid,C#,Wpf,Datagrid,我想要一个datagrid,其中包含重复的列,如下图所示 这只是一个数据网格,colums是重复的。 我们如何使用wpf windows datagrid做到这一点 谢谢,您可以通过手动向数据网格添加重复列来实现这一点。标题不需要是唯一的: <DataGrid ItemsSource="{Binding Path=Contacts}" AutoGenerateColumns="False"> <DataGrid.Columns> <Data
谢谢,您可以通过手动向
数据网格添加重复列来实现这一点。标题不需要是唯一的:
<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
:
如果指定重复次数大于多维数据集中的重复次数,则会看到一张图片:
这是很合乎逻辑的,因为没有相关数据
注意
:要使用绑定
aViewModel
,您需要确定适当的列表/集合,将它们设置为元素,并将它们组合到单个数据立方体中。在我的示例中,是静态数据,但您需要确定数据源和数据量,然后将它们放在一边,并将它们放在数据立方体中。我认为,如果没有数据立方体,就很难实现这种类型的东西(我尝试了不同的选项,使用转换器
,直接从数组绑定
,等等)。我不太确定您的要求,但如果我是正确的,您希望用不同的数据重复“相同”列
你可以这样做,但不是以你认为的方式。这就是拥有视图模型的目的,以一种让视图能够读取数据的方式封装数据。实际上,您需要的是具有相同标题和样式的列,包括其项目,但绑定到视图模型中的不同属性。您可以执行以下操作:
<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>