我在这个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。这可能是原因吗?如果是这样,我该怎么做才能解决它?
编辑:最后通过将每个图像放在自己的堆栈面板中并将这些面板添加到最终显示面板而不是自己的图像来解决问题。毕竟猜测它是堆栈面板的“限制”的问题......它们只是不能包含那么多的图像