WPF FlowDocument с ItemsPresenter - PullRequest
       1

WPF FlowDocument с ItemsPresenter

3 голосов
/ 01 марта 2011

Я использую привязываемый элемент управления FlowDocument, найденный здесь:

http://msdn.microsoft.com/en-us/magazine/dd569761.aspx

Он отлично работает как рекламируется;однако я надеялся расширить это.Я хочу иметь возможность указать ItemsPresenter для ItemsPanel, так же, как вы бы сделали для ItemsControl.Моя цель состоит в том, чтобы включить нижний колонтитул для таблицы.

Используя пример на сайте:

<flowdoc:ItemsContent ItemsSource="{Binding Source=  {StaticResource  DataSource},XPath=FortressGuys/Person}" >
<flowdoc:ItemsContent.ItemsPanel>
    <DataTemplate>
        <flowdoc:Fragment>
            <Table BorderThickness="1" BorderBrush="Black">
                <TableRowGroup flowdoc:Attached.IsItemsHost="True">
                    <TableRow Background="LightBlue">
                        <TableCell>
                            <Paragraph>First name</Paragraph>
                        </TableCell>
                        <TableCell>
                            <Paragraph>Last name</Paragraph>
                        </TableCell>
                    </TableRow>
                </TableRowGroup>

                <TableRowGroup>

                <!-- ITEMS PRESENTER -->

                </TableRowGroup>

                <TableRowGroup>
                    <TableRow>
                       <TableCell>
                         <Paragraph>My Amazing Footer</Paragraph>
                       </TableCell>
                     </TableRow>
                 </TableRowGroup>
            </Table>
        </flowdoc:Fragment>
    </DataTemplate>
</flowdoc:ItemsContent.ItemsPanel>
<flowdoc:ItemsContent.ItemTemplate>
    <DataTemplate>
        <flowdoc:Fragment>
            <TableRow>
                <TableCell>
                    <Paragraph>
                        <flowdoc:BindableRun BoundText="{Binding XPath=@FirstName}" />
                    </Paragraph>
                </TableCell>
                <TableCell>
                    <Paragraph>
                        <flowdoc:BindableRun BoundText="{Binding XPath=@LastName}"/>
                    </Paragraph>
                </TableCell>
            </TableRow>
        </flowdoc:Fragment>
    </DataTemplate>
</flowdoc:ItemsContent.ItemTemplate>
</flowdoc:ItemsContent>

, который в конечном итоге будет выглядеть примерно так:Кто-нибудь знает, как это будет сделано?

1 Ответ

4 голосов
/ 01 марта 2011

Просмотрев его дальше, я нашел ответ. Атрибут IsItemsHost сообщает элементу управления, где размещать элементы.

 flowdoc:Attached.IsItemsHost="True"

Удалите этот атрибут из первой TableRowGroup и добавьте его во вторую группу строк:

            <TableRowGroup flowdoc:Attached.IsItemsHost="True">

            <!-- ITEMS PRESENTER -->

            </TableRowGroup>
...