【发布时间】:2014-03-12 12:21:18
【问题描述】:
我正在从 IsolatedSotrage 下载大量图片,并将它们显示在 StackPanel 的屏幕上。当我启动应用程序时,我看不到手机中的图像(照片不可见(为什么?!)),但是当我锁定手机并解锁时,我拥有所有图片,一切正常。
为什么会这样?
XAML:
<ScrollViewer x:Name="ScrollViewer1">
<StackPanel x:Name="myStackPanel"/>
</ScrollViewer>
C# - 将图像添加到 StackPanel:
Image[] myImage = new Image[30];
for (int n = 1; n < 30; n++)
{
myImage[n] = new Image();
myImage[n].Source = getBitmap(n, "/image/");
myStackPanel.Children.Add(myImage[n]);
}
从IsolatedStorage打开图片的方法:
public BitmapImage getBitmap(int n, string path)
{
BitmapImage myBitmap = new BitmapImage();
using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
{
if (store.FileExists(path + n.ToString() + ".jpg"))
{
using (var isoStream = store.OpenFile(path + n.ToString() + ".jpg", FileMode.Open, FileAccess.Read))
{
myBitmap.SetSource(isoStream);
return myBitmap;
}
}
else
{
return myBitmap= null;
}
}
}
目前我对这个问题有 2 个令人失望的解决方案:
当我删除 ScrollViewer 时,我没有任何问题,但我的图像在屏幕之外。 但是当我使用 Grid 并将每张图片保存在单独的 Grid 中时,它可以工作,但加载图像需要更长的时间
Image[] myImage = new Image[30];
for (int n = 1; n < 30; n++)
{
Grid myGrid = new Grid();
myImage[n] = new Image();
myImage[n].Source = getBitmap(n, "/image/");
myGrid.Children.Add(myImage[n]);
myStackPanel.Children.Add(myGrid);
}
编辑:
看起来像这样:
【问题讨论】:
-
最初包含
ScrollViewer的内容是什么?是否有足够的高度来显示图像? -
ScrollViewer 在 LayoutRoot 中,整个屏幕用于显示图片。 ScrollViewer 最初只包含 stackpanel。
-
你用什么方法调用你发布的代码来填充 StackPanel?
-
什么类型的元素被用来承载
StackPanel?添加一个包含 StackPanel 的Border,这样您就可以看到在加载图像时StackPanel的大小应该如何变化。 -
在 StackPanel 我只想使用图像 (*.jpg)。我的英语很差,所以我不太明白我如何处理这个边界:)
标签: c# windows-phone-7 windows-phone-8 windows-phone scrollview