現在、データのコレクション (view と呼ばれる) をバインド (itemsource) する XAML ファイルで定義された単一のデータグリッドがあり、これは 1 つの大きなテーブルに表示されます (予想どおり、完全に機能しています)。
ただし、今必要なのは、データグリッドの PER 行を作成することです。これにより、多くのデータグリッドがすべて 1 行のデータを含むことになります。
私が考えることができる唯一のことは次のとおりです:
- データグリッドをコード内で (何らかの方法で) 動的に作成し、XAML から削除します
- これらの動的に作成されたデータグリッドのそれぞれの項目ソースに、たとえば (疑似-コード):
ビューの行ごとに、
新しいデータグリッドを作成
し、行を itemsource バインディングとして割り当てます
誰にもより良い提案がありますか?これは、私が提案している方法でも実行できますか? より良い/より簡単な方法はありますか?
理由 - 顧客は個別のページで各行を印刷したいので、多くのデータグリッドを作成し、それぞれを個別に printvisual に渡してこれを実現します。
コード:
// this is the datasource, essentially we want to show one recipe per printed page (so per datagrid)
List<ViewRecipe> View
XAML:
<DataGrid ItemsSource="{Binding View}"
AutoGenerateColumns="False"
Height="Auto"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserResizeColumns="False"
CanUserResizeRows="False"
CanUserReorderColumns="False"
IsReadOnly="True"
GridLinesVisibility="None">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="FontWeight"
Value="Bold" />
<Setter Property="FontSize"
Value="12" />
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Type"
Width="200"
FontSize="12"
Binding="{Binding Path=Name}" />
<DataGridTemplateColumn Header="Ingredients"
Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DataGrid AutoGenerateColumns="False"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserResizeColumns="False"
CanUserResizeRows="False"
CanUserReorderColumns="False"
IsReadOnly="True"
GridLinesVisibility="None"
ItemsSource="{Binding Ingredients}">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="FontWeight"
Value="Bold" />
<Setter Property="FontSize"
Value="12" />
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Ingredients"
Width="*"
FontSize="12"
Binding="{Binding Path=IngredientName}" />
<DataGridTextColumn Header="Quantite"
Width="*"
FontSize="12"
Binding="{Binding Path=Qty}" />
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>