我有一个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>
知道我做错了吗?
答案 0 :(得分:1)
显然FlipView
虚拟化在需要加载更多数据时回收现有项目。您只需在与新DataContext
关联之前擦除画布的内容。一种方法可能是使用绑定来填充画布的子项,并在添加新内容之前始终擦除现有内容。