我正在为 WP 8 创建游戏,我正在使用 ScrollViewer 和带有按钮的 Grid 作为游戏板。
问题是当游戏板太大时。然后应用程序崩溃无一例外。
输出是:
ScrollViewer content size: 2400,2400 //my debug output
The program '[3420] TaskHost.exe' has exited with code -528909961 (0xe0797977).
这是 XAML 代码:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<ScrollViewer x:Name="ContentPanelScroll" HorizontalScrollBarVisibility="Auto">
<Grid x:Name="GamePanel" ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition Height="100"/>
<RowDefinition Height="100"/>
<!-- more RowDefinitions in this grid are addend in C# code-->
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="100"/>
<!-- more ColumnDefinitions in this grid are addend in C# code-->
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0" Content="..."/>
<!-- more buttons in this grid are addend in C# code-->
</Grid>
</ScrollViewer>
</Grid>
这就是我调整/缩放游戏板的方式
private void ZoomGameBoard(double delta)
{
// typically delta = 10px;
// 20 columns and 20 rows, each zoomed to 150px is 3000x3000 px
foreach (var item in RowDefinitions)
{
var value = item.Height.Value + delta;
item.Height = new GridLength(value); // make row bigger so its content stretch
}
foreach (var item in ColumnDefinitions)
{
var value = item.Width.Value + delta;
item.Width = new GridLength(value); // make column bigger so its content stretch
}
}
你能告诉我问题出在哪里或如何制作更大的游戏板吗?
谢谢。:-)
编辑:
我的问题大概是这样的:
Insufficient memory to continue the execution of the program.
和这个
An unhandled exception of type 'System.OutOfMemoryException' occurred in System.Windows.ni.dll
但是每次应用程序崩溃(只是有时)并没有解决我如何显示大型游戏板的问题时,都不会抛出这个异常。
编辑 2:这是演示我的问题的测试应用程序。您可以更改代码的大小或使用手机底部的按钮。
整个项目在这里: http: //www.stud.fit.vutbr.cz/~xmarec12/shared/2013/TestGameApp.zip