在UWP项目中,我在每个ListViewItem中放置了InkCanvas
。但是当项目数超过126时,我得到了一个XamlParseException,它抱怨:
无法创建'Windows.UI.Xaml.Controls.InkCanvas
'
以下是天真的代码片段:
<Page x:Class="App9.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<ListView ItemsSource="{x:Bind Items, Mode=OneWay}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<InkCanvas />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</Grid>
</Page>
代码背后的代码:
public sealed partial class MainPage : Page
{
public ObservableCollection<int> Items { get; }
public MainPage()
{
this.Items = new ObservableCollection<int>();
for (int i = 0; i < 130; i++)
{
this.Items.Add(i);
}
InitializeComponent();
}
}
(请注意:为了测试上限,我更改了ListView的默认ItemsPanel
)
上面这些代码非常简单,所以代码似乎没有任何问题。是否有可以创建InkCanvas
的上限?
修改: 我已经测试过在代码背后创建InkCanvas,如下所示:
for (int i = 0; i < 130; i++)
{
this.lvw.Items.Add(new InkCanvas());
}
我得到了一个不同的运行时错误: System.OutOfMemoryException :'内存不足,无法继续执行程序。'
但是通过检查任务管理器,我可以看到一个应用程序包含100个InkCanvas实例,只需要不超过40mb的内存。这非常令人困惑。