我的想法是創建一個列表視圖與圖像,我想插入一個InkCanvas每個圖像。 我嘗試了兩種方式,都有問題。內存不足例外Listview與圖像和inkcanvas UWP
第一種方法。
我創建的列表視圖與它的DataTemplate:
<DataTemplate x:Name="ListViewItemTemplate">
<Grid>
<Image></Image>
<InkCanvas></InkCanvas>
</Grid>
</DataTemplate>
<ItemsPanelTemplate x:Name="ListItemsPanelTemplate">
<VirtualizingStackPanel Orientation="Vertical">
<VirtualizingStackPanel.ChildrenTransitions>
<TransitionCollection/>
</VirtualizingStackPanel.ChildrenTransitions>
</VirtualizingStackPanel>
</ItemsPanelTemplate>
<ListView x:Name="list"
ItemTemplate="{StaticResource ListViewItemTemplate}"
ItemsPanel="{StaticResource ListItemsPanelTemplate}">
</ListView>
C#:
List<Image> pages = new List<Image>();
list.ItemsSource = pages;
這樣,列表視圖使用虛擬化,當我在inkview寫,行程被複制每5墨跡查看。這不好。
如果我刪除虛擬化:
<ItemsPanelTemplate x:Name="ListItemsPanelTemplate">
<StackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
它發生的第二個方式問題。寫在下面。
方式二:
我創造了這樣的DataTemplate中一個用戶控件的PageFormat:
<UserControl>
<Grid Background="White">
<Image x:Name="image"></Image>
<InkCanvas x:Name="ink" ></InkCanvas>
</Grid>
</UserControl>
<ListView x:Name="list" ></ListView>
C#:
List<PageFormat> pages= new List<PageFormat>();
list.ItemsSource = pages;
這樣,我有以下問題:like in this question
當我創建超過125個InkCanvas時,存在內存問題。 我更喜歡第二種方式,因爲我可以直接在用戶控件中播放頁面的格式,但我無法解決這些問題。
我想解決生成InkCanvas System.OutOfMemoryException錯誤的問題。 我該如何解決它? 非常感謝。
爲什麼你沒有使用'ItemsStackPanel'? –
而不是listview?但是我認爲這會再次發生超過125個InkCanvas的內存問題。 – Andrea485
StackPanel的intead –