Печатайте счета как Super mart bills в wpf - PullRequest
0 голосов
/ 05 февраля 2019

Я хочу напечатать длинную купюру, как, например, купюру супермаркета. Распечатывать купюры в соответствии с продуктами, которые я использую, но они печатают только 10 продуктов, которые отображаются на одной странице документа xps.

Я попробовал код, который упоминаетсяниже

Это мой пользовательский элемент управления

<UserControl x:Class="BillingSystem.Views.forPrinting"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:BillingSystem.Views"
         mc:Ignorable="d" 
          d:DesignWidth="1000">
<UserControl.Resources>
    <Style TargetType="TextBlock">            
        <Setter Property="FontSize" Value="35"/>
        <Setter Property="FontWeight" Value="Bold"/>
    </Style>
</UserControl.Resources>
<ScrollViewer>
<StackPanel>
    <TextBlock HorizontalAlignment="Center" FontFamily="times" Text="افضل سویٹس غلہ منڈی دینہ"/>
    <TextBlock HorizontalAlignment="Center" FontFamily="times" Text="PH:0544-631031"/>

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="1.8*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>

        <TextBlock Text="Customer:" Grid.Column="0"/>
        <TextBlock x:Name="tb" Grid.Column="1"/>
        <TextBlock Text="Bill No:" Grid.Column="2"/>
        <TextBlock x:Name="bill" Grid.Column="3"/>
    </Grid>

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="2.5*"/>
        </Grid.ColumnDefinitions>

        <TextBlock Text="Items:" Grid.Column="0"/>
        <TextBlock x:Name="totalitems"  Grid.Column="1"/>
        <TextBlock Text="Date:" Grid.Column="2"/>
        <TextBlock x:Name="date" Grid.Column="3"/>
    </Grid>
    <DataGrid x:Name="dg" GridLinesVisibility="Horizontal" MinColumnWidth="140" FontWeight="Bold" FontSize="35"  BorderBrush="Gray" AreRowDetailsFrozen="True" CanUserReorderColumns="False" BorderThickness="2"  IsReadOnly="True"/>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="3*"/>
            <ColumnDefinition Width="*"/>

        </Grid.ColumnDefinitions>

        <TextBlock Text="Total" FontWeight="Bold" Grid.Column="0"/>
        <TextBlock x:Name="total"  Grid.Column="1"/>            
    </Grid>
    <TextBlock Text="Thanku for your Visit" HorizontalAlignment="Center"/>
    </StackPanel>
</ScrollViewer>

Это мой код для печати этого элемента управления

forPrinting fp = new forPrinting();
                    // Configure save file dialog box
                    SaveFileDialog dlg = new SaveFileDialog();
                    dlg.FileName = txtBill.Text;  // Default file name
                    dlg.DefaultExt = ".xps"; // Default file extension
                    dlg.Filter = "XPS Documents (.xps)|*.xps"; // Filter files by extension
                    dlg.InitialDirectory = @"D:\Bills";

                    /*
                    if (File.Exists(dlg.FileName))
                    {
                        File.Delete(dlg.FileName);
                    }*/

                    // Show save file dialog box
                    Nullable<bool> result = dlg.ShowDialog();
                    // Process save file dialog box results
                    if (result == true)
                    {
                        // Save document
                        string filename = dlg.FileName;                            

                        //FixedDocument doc = (FixedDocument)fp.Document;
                        XpsDocument xpsd = new XpsDocument(filename, FileAccess.ReadWrite); 

                        XpsDocumentWriter xw = XpsDocument.CreateXpsDocumentWriter(xpsd);

                        xw.Write(fp);

                        xpsd.Close();
                    }


                    //Print
                    PrintDialog printDlg = new PrintDialog();
                    printDlg.ShowDialog();
                    printDlg.PrintVisual(fp, "Grid Printing.");

Я хочу напечатать счетнапример, счет для супермаркетной печати в зависимости от продукта может быть 0-100, поэтому счет для печати соответственно

...