0

WPF 文档的初学者在这里。

我正在探索在 WPF 应用程序中逐页显示静态内容的可能性。很像 PowerPoint 演示文稿,可以在其中导航下一个和上一个幻灯片。

从我最初的研究中,我认为 FlowDocument 是我一直在寻找的东西,但是当我需要显示多个可以在下一页和上一页导航的页面时,我陷入了困境。

如果我使用 FlowDocument 的方法正确,任何人都可以指导我,我如何拥有多个页面(或文档)?

这对我来说是一个单页:

<FlowDocumentReader  HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
        <FlowDocument PagePadding="0" ColumnWidth="999999">
            <Paragraph  Style="{StaticResource headerText}" TextAlignment="Center" >
                <Bold>AGENDA</Bold>
            </Paragraph>
            <List StartIndex="1" MarkerStyle="Decimal" Style="{StaticResource normalText}" MarkerOffset="20" TextAlignment="Left">
                <ListItem>
                    <Paragraph>XAML</Paragraph>
                </ListItem>
                <ListItem>
                    <Paragraph>Layouts in WPF</Paragraph>
                    <List StartIndex="1" Margin="0"  MarkerStyle="Decimal" Style="{StaticResource subText}" MarkerOffset="20" TextAlignment="Left">
                        <ListItem>
                            <Paragraph>Controls</Paragraph>
                        </ListItem>
                        <ListItem>
                            <Paragraph>Styles</Paragraph>
                        </ListItem>
                        <ListItem>
                            <Paragraph>Templates</Paragraph>
                        </ListItem>
                    </List>
                </ListItem>
                <ListItem>
                    <Paragraph>Binding</Paragraph>
                    <List StartIndex="1" Margin="0" MarkerStyle="Decimal" Style="{StaticResource subText}" MarkerOffset="20" TextAlignment="Left">
                        <ListItem>
                            <Paragraph>DependencyObject</Paragraph>
                        </ListItem>
                        <ListItem>
                            <Paragraph>DependencyProperty</Paragraph>
                        </ListItem>
                    </List>
                </ListItem>
            </List>
        </FlowDocument>
    </FlowDocumentReader>
4

1 回答 1

2

我认为最简单的方法就是在视图模型中绑定一个“CurrentPage”变量的内容控件。IE

private UserControl _currentpage
public UserControl CurrentPage { 
    get
    {
        return _currentpage;
    }
    set
    {
       if (PropertyChanged != null)
           PropertyChanged(this, new PropertyChangedEventArgs("CurrentPage"));
    } 
}

public ViewModel()
{
    CurrentPage = new FirstPage();
}

private void NextPageExecuted(object parameter)
{
     //Logic that picks the next page from a set of pages
}

private void PrevPageExecuted(object parameter)
{
     //Logic that picks the previous page from a set of pages
}

然后在 xaml 中放一个通用的内容控件

<ContentControl Content="{Binding CurrentPage}" />

然后只需定义一个用户控件来定义您想要查看的每个页面,FirstPage 可能是您粘贴在那里的代码。

于 2012-06-20T14:08:15.547 回答