从项目文件加载图像

时间:2013-01-31 14:42:48

标签: image listbox windows-phone-8

我正在尝试获取png图像,这是我的资源文件夹。我测试了这里写的解决方案:Add images to ListBox (c#, windows phone 7)。首先,我想为ListBox中的每个项目获取相同的图像。但我无法实现这一点。图片没有显示。

这是我在xaml中的列表的样子:

<ListBox x:Name="ProductList">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding Name}"/>
                        <Image Source="{Binding ImagePath}"  Stretch="None"/>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

这是我填充项目的方式:

List<ImageData1> productsList = new List<ImageData1>();

foreach (ProductItem item in ProductsTable)
{
    if (item.Category == chosenCategory.TrId)
    {
            ImageData1 img = new ImageData1();
            img.Name = item.Name;
            img.ImagePath = new Uri("Resources/img.png", UriKind.RelativeOrAbsolute);
            productsList.Add(img);
    }
}

ProductList.ItemsSource = productsList;

这是我的类,用于保存图像数据:

public class ImageData1
{
    public Uri ImagePath
    {
        get;
        set;
    }

    public string Name
    {
        get;
        set;
    }
}

2 个答案:

答案 0 :(得分:2)

尝试将/放在图像路径之前。像/Resources/img.png一样。并尝试将UriKind.RelativeOrAbsolute更改为UriKind.Relative。并确保将图片添加为Content(图片的Build Action属性)。这样它对我有用。

答案 1 :(得分:0)

也可以使用以下汇编代码从当前应用程序中读取图像。

StreamResourceInfo info =Application.GetResourceStream(new Uri("Resources/img.png", UriKind.RelativeOrAbsolute));
var bitmap = new BitmapImage();
bitmap.SetSource(info.Stream);
img.Soure = bitmap;