UWP:是否可以创建InkCanvas实例的上限?

时间:2017-07-06 11:44:54

标签: xaml uwp windows-store-apps winrt-xaml

在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的内存。这非常令人困惑。

0 个答案:

没有答案