11
votes

WPF: fixdocument dans Visual Studio 2008 Designer

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>


0 commentaires

4 Réponses :


4
votes

comme solution de contournement, je mets le documentweweviewer ainsi que la page dans une grille: xxx

puis je joins la page à la page Documentviewer dans le chargé Événement de la fenêtre:

VB Exemple: xxx

C # exemple: xxx


0 commentaires

3
votes

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>


0 commentaires

3
votes

Une solution de contournement plus propre: xxx pré>

cette sous-classe de 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>

Utilisation: P>

<doc:XamlFixedDocument xmlns:doc="clr-namespace:Hillinworks.WPF.Document">
    <PageContent>
        <FixedPage Background="White">
            <TextBlock Text="hello, world" />
        </FixedPage>
    </PageContent>
</doc:XamlFixedDocument>


2 commentaires

1
votes

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 fixdocument code> comme Hillin suggéré et ajoutez une propriété pour obtenir 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> xxx pré>

maintenant dans le XAML, vous pouvez facilement créer un 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>


0 commentaires