2013-03-23 102 views
0

我有一個FlipView具有包含NotebookPageCanvas的DataTemplate。 NotebookPageCanvas派生自Canvas幷包含一個InkManager。我正在動態添加子元素到這個畫布,我發現孩子在FlipView的其他頁面上重複。例如,如果我從我的FlipView中的10個項目開始,當我動態地將一個Rectangle添加到索引0處的畫布上時,該矩形也將被添加到索引3處的畫布上。一切正常,我的FlipView,但之後,我無法找到一個模式來控制孩子的控制行爲。這是我的FlipView XAML。兒童元素重複FlipView內

<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

顯然FlipView當需要加載更多數據時,虛擬化正在回收現有項目。在與新的DataContext相關聯之前,您只需擦除畫布的內容即可。一種方法可能是使用綁定來填充畫布的子項,並在添加新項之前始終擦除現有內容。