使用MVVM WPF打印自定义用户控件

时间:2016-03-08 16:19:42

标签: c# wpf xaml mvvm printing

我有一个视图,我显示了一堆交易卡。每张卡都是一个用户控件,它们都显示在一个窗口中。一排有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度角(横向视图)打印。谢谢你的帮助!

0 个答案:

没有答案