使用app package文件夹中的datatemplate将图像绑定到列表框

时间:2013-09-11 13:57:08

标签: c# xaml data-binding windows-8 windows-store-apps

嗨我需要将图像绑定到列表框但是当我尝试它时,我得到FILE NOT FOUND但文件存储在文件夹layoutGraphics中的应用程序包中。我尝试将文件放到默认文件夹但我得到相同的结果任何人都知道什么是坏的?

var file = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync("ms-appx:///layoutGraphics/offline.png");
        var fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
        var img = new BitmapImage();
        img.SetSource(fileStream);
        ImgSource = img;

// property

private BitmapImage _imgSource;
    public BitmapImage ImgSource
    {
        get { return _imgSource; }
        set
        {
            _imgSource = value;
            OnPropertyChanged("MyDatasMessagesUserList");
        }
    }

或者有人知道如何使用datatemplate将appss从app文件夹绑定到我的列表框?

1 个答案:

答案 0 :(得分:1)

Windows.Storage.ApplicationData.Current.LocalFolder正在从应用程序存储而不是程序包中检索文件。对于包文件夹,您需要使用Windows.ApplicationModel.Package.Current.InstalledLocation。此外,GetFileAsync仅使用文件名而不是完整路径。 这是完成你想要的代码:

var layoutGraphiceFolder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync("layoutGraphics")
var file=await layoutGraphiceFolder.GetFileAsync("offline.png");

使用完整路径执行此操作的另一种方法是:

var file=await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///layoutGraphics/offline.png"));