2012-09-26 46 views
0

我已经基于Visual Studio中的网格应用XAML模板创建了Windows商店应用。它将GridView绑定到包含组的集合,其中每个组包含每个项目包含一些元数据和图像的项目。 A CollectionViewSource用于在网格视图中显示组内的项目。这一切工作正常。然后,我添加了一个按钮来添加一个新的项目,当点击该项目与其元数据显示,但不是图像。点击事件处理程序:在Windows应用商店应用中使用CollectionViewSource时不显示商品图像

private void Button_Click_1(object sender, RoutedEventArgs e) 
{ 
    SampleDataGroup sampleDataGroup = SampleDataSource.GetGroup("Group-1"); 
    var sampleDataItem = new SampleDataItem("uniq", "Title", "Subtitle", "c:/users/christian/pictures/my_image.jpg", "Description", "Content", sampleDataGroup); 
    sampleDataGroup.Items.Add(sampleDataItem); 
} 

但是,如果图像从项目的资产文件夹从图片文件夹进行读取,不,它按预期工作。有任何想法吗?

回答

2

您无法直接访问Win8应用程序中的文件系统,因此您的图像路径(c:/users/christian/pictures/my_image.jpg)无法在XAML中加载图像。

最好的办法是用ImageSource编写类,然后在C#中加载图片文件名称更改。

See here for an example

+0

谢谢,我尝试了给予[此处的建议](http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/645cd100-88e3-4095-a5bf-2b078d65228c)哪些工作。我猜这跟你链接的例子差不多。 – Christian

1

由于ZombieSheep(LOL)提到你不能像那样访问文件系统。将图像添加到(例如)项目中的Assets文件夹,并像下面这样引用它:(image名为boot.jpg,Image for View中称为MyImage的元素)。使用collectionviewsource时,它是一样的,只需设置正确的路径(ms-appx:///或使用this.UriBase,或者定义一个静态只读属性来保存uri基本字符串)。

希望这有助于:)

public sealed partial class MainPage : Page 
{ 
    public MainPage() 
    { 
     this.InitializeComponent(); 
     SetImage(); 
    } 

    private static readonly Uri _baseUri = new Uri("ms-appx:///"); 

    void SetImage() 
    { 
     MyImage.UriSource = new Uri(this.BaseUri, "Assets/boot.jpg"); 
     //MyImage.Source = new BitmapImage(new Uri("ms-appx:///Assets/boot.jpg")); 
     //MyImage.Source = new BitmapImage(new Uri(_baseUri,"/Assets/boot.jpg")); 
    } 
} 

你必须设置一个新的BitmapImage或视图定义的BitmapImage和刚刚成立的开放的我们:)

+0

谢谢,这将有助于测试场景。 – Christian

相关问题