0

我有一个具有包含 NotebookPageCanvas 的 DataTemplate 的 FlipView。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>

知道我做错了什么吗?

4

1 回答 1

1

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

于 2013-03-24T05:05:36.247 回答