C'est Un bug bien connu que Visual Studio montre Une erreur lorsque vous essayez de construire un fixdocument code> dans xaml. Par exemple, l'extrait suivant <DocumentViewer>
<FixedDocument>
<PageContent>
<FixedPage Width="21.0cm" Height="29.7cm">
<TextBlock>Hello World!</TextBlock>
</FixedPage>
</PageContent>
</FixedDocument>
</DocumentViewer>
4 Réponses :
comme solution de contournement, je mets le documentweweviewer ainsi que la page
dans une grille: puis je joins la page à la page Documentviewer dans le VB Exemple: em>
p> C # exemple: em> p> chargé code>
Événement de la fenêtre: P>
Je sais que cela avait déjà été répondu, mais je pense que cette réponse est plus agréable car elle ne nécessite pas d'ajouter un documentView.
S'il y a un moyen de faire référence aux ressources par le nom de la clé et de les mettre dans le Document fixe avec XAML, s'il vous plaît laissez-moi savoir. Je ne peux pas sembler trouver un moyen de faire cela, mais peut-être que c'est possible. P>
Utilisez: p>
<FixedDocument
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<FixedDocument.Resources>
<PageContent x:Key="page1">
<FixedPage Width="793.76" Height="1122.56">
<TextBlock Margin="50" Text="Page 1"/>
</FixedPage>
</PageContent>
<PageContent x:Key="page2">
<FixedPage Width="793.76" Height="1122.56">
<TextBlock Margin="50" Text="Page 2"/>
</FixedPage>
</PageContent>
</FixedDocument.Resources>
</FixedDocument>
Une solution de contournement plus propre: cette sous-classe de Utilisation: P> fixdocument code> façonne a pages code> Propriété et rediriger toutes les pages ajoutées au vrai Pages CODE> Propriété dans sa classe de base. P> <doc:XamlFixedDocument xmlns:doc="clr-namespace:Hillinworks.WPF.Document">
<PageContent>
<FixedPage Background="White">
<TextBlock Text="hello, world" />
</FixedPage>
</PageContent>
</doc:XamlFixedDocument>
Notez que cela enfreint la fonctionnalité d'impression: J'ai posté une réponse à cette question qui fixe la rupture de la fonction d'impression.
Alors je jouais avec des documents fixes et je suis tombé sur le même problème. Et je pense que cela est peut-être même une solution de contournement plus propre que ce que d'autres ont suggéré.
Si fondamentalement, vous devez créer une classe personnalisée dérivée de maintenant dans le XAML, vous pouvez facilement créer un fixdocument code> comme fixdocument code> à partir de cet objet pagecontents code>. Mais puisque ces pages sont désormais des enfants visuels d'un autre objet, vous devez en faire une copie à l'aide de classes xmlreader et xmlwriter. p> CustomFixedDocument Code> StaticResource et liez votre DocumentViewer CODE> à la propriété "fixdocument" de celui-ci. P> <Window x:Class="MyProject.DocumentWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:MyProject"
mc:Ignorable="d"
Title="DocumentWindow" Height="450" Width="800" Loaded="Window_Loaded">
<Window.Resources>
<local:CustomFixedDocument x:Key="Report">
<PageContent>
<FixedPage Width="793.76" Height="1122.56">
<TextBlock Margin="50" Text="Page 1"/>
</FixedPage>
</PageContent>
<PageContent>
<FixedPage Width="793.76" Height="1122.56">
<TextBlock Margin="50" Text="Page 2"/>
</FixedPage>
</PageContent>
</local:CustomFixedDocument>
</Window.Resources>
<Grid>
<DocumentViewer x:Name="viewer" Document="{Binding Source={StaticResource Report}, Path=FixedDocument}"/>
</Grid>