我有一个视图,我显示了一堆交易卡。每张卡都是一个用户控件,它们都显示在一个窗口中。一排有4张牌,但是在一些可观察的牌组中有很多行。我希望能够打印出来。我过去通过重新创建代码隐藏中的所有UI元素来完成此操作,但我想使用MVVM重写它,尽管我仍然可以在MVVM中执行此方法,但它似乎并不是最干净的解决方案。有谁知道更简单的方法来实现这一目标?这是我要打印的窗口的XAML代码:
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto">
<ItemsControl ItemsSource="{Binding StateManager.Cards}">
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type cardModels:AttackCard}">
<StackPanel>
<cardViews:AttackCardControl />
</StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type cardModels:EquipmentCard}">
<StackPanel>
<cardViews:EquipmentCardControl />
</StackPanel>
</DataTemplate>
...
</ItemsControl.Resources>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Width="960"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ScrollViewer>
如您所见,我有一个ItemsControl,其中包含一个具有固定宽度的包装面板中的所有卡片。每张卡的宽度恰好为240,因此每行最多可以容纳4张卡。数据模板用于显示所有从Card类继承并位于ObservableCollection中的不同类型的卡。任何人对如何打印都有任何想法?从我以前的程序中,我还了解到只有2行可以放在一张纸上,并且必须以90度角(横向视图)打印。谢谢你的帮助!