子元素在FlipView内重复

时间:2013-03-23 00:54:54

标签: c# windows-8 windows-runtime windows-store-apps winrt-xaml

我有一个FlipView,它包含一个包含NotebookPageCanvas的DataTemplate。 NotebookPageCanvas派生自Canvas并包含InkManager。我正在动态地将子元素添加到此画布,我发现子画面在FlipView的其他页面上重复。

例如,如果我在FlipView中以10个项目开始,当我在索引0处向画布动态添加一个Rectangle时,该矩形也将被添加到索引3处的画布。一切正常,我的三个项目FlipView,但在那之后,我无法找到子控件如何表现的模式。这是我的FlipView XAML。

<FlipView
        x:Name="flipView"
        AutomationProperties.AutomationId="ItemsFlipView"
        AutomationProperties.Name="Item Details"
        TabIndex="1"
        Grid.RowSpan="2"

        ItemsSource="{Binding Source={StaticResource itemsViewSource}}" SelectionChanged="flipView_SelectionChanged" >

        <FlipView.ItemContainerStyle>
            <Style TargetType="FlipViewItem">
                <Setter Property="Margin" Value="0,137,0,0"/>
            </Style>
        </FlipView.ItemContainerStyle>

        <FlipView.ItemTemplate>
            <DataTemplate>


                <local:NotebookPageCanvas  x:Name="InkCanvas" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                    <Canvas.Background>
                        <SolidColorBrush Color="{Binding BackgroundColor}" />
                    </Canvas.Background>

                    <TextBlock Foreground="BlueViolet" Canvas.Left="0" Canvas.Top="100" Text="{Binding Title}" />

                </local:NotebookPageCanvas>


            </DataTemplate>
        </FlipView.ItemTemplate>
    </FlipView>

知道我做错了吗?

1 个答案:

答案 0 :(得分:1)

显然FlipView虚拟化在需要加载更多数据时回收现有项目。您只需在与新DataContext关联之前擦除画布的内容。一种方法可能是使用绑定来填充画布的子项,并在添加新内容之前始终擦除现有内容。