アプリで画像を表示するために使用するこの 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>
追加する画像の高さによっては、この非表示の制限を「超える」1 つの画像は表示されず (画像があるはずの場所に空白が表示されるだけです)、この前後のすべての画像が表示されます。 1 つが適切に表示されます。画像を追加する方法のコードは次のとおりです。
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 にアップグレードしました。それが原因でしょうか?もしそうなら、私はそれを修正するために何ができますか?
編集:最終的に、各画像を独自のスタックパネルに配置し、それらのパネルを画像の代わりに最終的な表示パネルに追加することで、問題を解決しました。結局、スタックパネルの「制限」に問題があると思います...それだけ多くの画像を含めることはできません