Bonjour,

je débute en c# et silverlight. Je voudrais, grâce à silverlight, imprimer des informations contenu dans mon objet.

J'utilise un template xaml assez simple (plusieurs zones accueillant chacune leurs élément).

Le problème c'est que si les informations imprimées prennent plus d'une page, elles ne sont pas imprimés.

Pour les informations basiques, cela correspond, mais j'utilise un champ commentaire, qui peut être très long, et donc dépassé la taille maximum.

Voici le bloc concerné par le blocage :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
                        <TextBlock Text="Commentaire : " 
                                   Grid.Row="15" 
                                   FontSize="18" 
                                   Margin="0,35,0,0" />
                        <Border Background="Black" 
                                Grid.Row="15" 
                                Height="0.5"  
                                VerticalAlignment="Bottom" 
                                Grid.ColumnSpan="2" />
                        <TextBlock Name="Commentaire" 
                                   Grid.ColumnSpan="2"
                                   MaxWidth="815"
                                 TextWrapping="Wrap"
                                   Grid.Row="16" 
                                   Margin="10,10,0,0" />
Et voici comment je remplis mon document :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
void btPrint_Click(object sender, RoutedEventArgs e)
        {
PrintDocument monDocument = new PrintDocument();
            monDocument.Print("Fiche_");
            btPrint.IsEnabled = true;      
            monDocument.PrintPage += (s, args) =>
 
            {
                Voiture maVoiture = this.itmVoitureSelect;
 
                PrintPageTemplate monTemplatePrint = PrintableArea.printTemplate(maVoiture);
                monTemplatePrint.Width = args.PrintableArea.Width;
                monTemplatePrint.Height = args.PrintableArea.Height;
                args.PageVisual = monTemplatePrint;
            };
}
Et la méthode PrintTemplate(un peu long, j'ai donc enlever la plupart des propriétés, mais c'est du copier/coller : 1 ligne pour 1 propriété) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
public static PrintPageTemplate printTemplate(Voiture maVoiture)
        {
 
 
            PrintPageTemplate monTemplate = new PrintPageTemplate();
 
 
            monTemplate.Nom = maVoiture.Nom;
            monTemplate.Commentaire= maVoiture.Commentaire;
 
            return monTemplate;
        }
Je suis ouvert à toutes idées (création d'un second template pour le "commentaire" etc...). Il est même possible que j'imprime la partie commentaire dans un document à part, et sans template (uniquement le contenu de commentaire).

Comment faire pour tout imprimer? Faut il ajouter des propiétés dans le xam des manipulations dans la printableArea?

Merci d'avance.
Si ce n'est pas assez clair, ou qu'il manque des élément, n’hésitez pas à me le faire savoir.