我用这个 StackPanel 来在我的应用程序中显示图像时遇到了一个非常奇怪的问题。最近,它似乎已经开发了一个不可见的“高度限制”,即使它被放置在 ScrollViewer 中。
<Grid x:Name="AttachmentList" Grid.Row="1" Margin="12,0,12,0">
<Button Content="Add Attachment" Height="88" Name="btnAdd" HorizontalAlignment="Left" VerticalAlignment="Top" Width="246" Click="btnAdd_Click" Margin="-12,-28,0,0" />
<Button Content="Take Photo" Height="88" HorizontalAlignment="Right" Margin="0,-28,-12,0" Name="btnTakePic" VerticalAlignment="Top" Width="246" Click="btnTakePic_Click"/>
<Button Content="Remove Selected" Height="88" Margin="-12,48,0,0" Name="btnDelete" HorizontalAlignment="Left" VerticalAlignment="Top" Width="246" Click="btnDelete_Click" />
<Button Content="Done" Height="88" HorizontalAlignment="Right" Margin="0,48,-12,0" Name="btnDone" VerticalAlignment="Top" Width="246" Click="btnDone_Click" />
<ScrollViewer BorderThickness="0" Margin="0,142,0,0">
<StackPanel Name="DisplayPanel" Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Top" />
</ScrollViewer>
</Grid>
根据我添加到其中的图像的高度,将不会显示“超过”这个不可见限制的一个图像(图像应该是一个空白区域),以及之前或之后的所有图像一个会正确显示。这是我如何添加图像的代码:
private void imageTask_Completed(object sender, PhotoResult e)
{
if (e.TaskResult == TaskResult.OK)
{
string[] splicedPath = e.OriginalFileName.Split('\\');
string imageName = splicedPath[splicedPath.Length - 1];
imageDict.Add(imageName, e.ChosenPhoto);
BitmapImage bmp = new BitmapImage();
bmp.SetSource(e.ChosenPhoto);
Image pic = new Image();
pic.Source = bmp;
pic.Tag = imageName;
pic.Margin = new Thickness(0, 0, 0, 15);
pic.MouseLeftButtonUp += new MouseButtonEventHandler(pic_MouseLeftButtonUp);
DisplayPanel.Children.Add(pic);
}
}
这个问题没有发生。在我的应用程序的所有过去版本中,一切仍然运行良好,所以我不确定为什么现在会出现这种情况。我已经好几个星期没有碰过这个特定页面的代码了。不过,我最近确实将我的整个项目从 Windows Phone OS 7.0 升级到了 7.1。这可能是原因吗?如果是这样,我该怎么做才能解决它?
编辑:最后通过将每个图像放在自己的堆栈面板中并将这些面板添加到最终显示面板而不是自己的图像来解决问题。猜猜这是堆栈面板的“限制”的问题......毕竟它们不能包含那么多图像