下の図に示すように、列が繰り返されるデータグリッドが必要です。
これは 1 つのデータグリッドであり、列が繰り返されます。wpf windows datagrid でこれを行うにはどうすればよいですか?
ありがとう、
3つ(またはそれ以上)のデータグリッドを水平に配置し、ページングを使用してデータをバインドできませんか..最初の10(n)レコードをグリッド1に、次の10(n)レコードをグリッド2に同様に意味します.
LINQ で利用可能なSkipメソッドとTakeメソッドを使用して、ページングを行うことができます...
record.Skip((page - 1)*pageSize).Take(pageSize);
次のようなことができます。
<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>
これは、繰り返し列を手動で に追加することで実現できます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>
あなたが何を求めているのかよくわかりませんが、私が正しければ、「同じ」列を異なるデータで繰り返したいと考えています。
あなたはこれを行うことができますが、あなたが考える方法ではありません. これは、ビュー モデルを使用して、ビューが読み取れるようにデータをカプセル化する目的です。実際に必要なのは、項目を含めて同じヘッダーとスタイルを持つ列ですが、それはビュー モデルの異なるプロパティにバインドされます。