0

好的,这是我的问题:

  • 我有一个自定义类,其中包含一个项目列表——每个项目都有一个与之关联的图像路径
  • 我在项目中添加了一个包含图像的文件夹(所以我想 XAP 中也添加了,是吧?)
  • 当我尝试在 XAML 中绑定图像项的源时,它不起作用。

<ListBox Margin="0,0,-12,0" ItemsSource="{Binding Items}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal" Margin="0,0,0,17">
                <Image Height="100" Width="100" Margin="12,0,9,0" Source="/AlbumArt/{Binding AlbumArt}"/>
                <StackPanel Width="311">
                    <TextBlock Text="{Binding Title}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}"/>
                    <TextBlock Text="{Binding Author}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                </StackPanel>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

我究竟做错了什么?有任何想法吗?


附言

  • 我也尝试过Source="{Binding AlbumArt}",但它仍然没有显示任何内容。

  • 最疯狂的是,如果我将 Source 设置为特定图像(例如/AlbumArt/someImage.jpg),该图像在 Visual Studio 和 Emulator 中似乎可以正常工作。

4

5 回答 5

0

我很确定你只是使用了错误的路径,试试这个....

"/ApplicationName;component/AlbumArt/{Binding AlbumArt}"

当然,将 ApplicationName 部分替换为您的应用程序名称。确保将其中的空间替换为%20

于 2013-07-10T17:18:16.630 回答
0

你要做的是这个..

<Image Height="100" Width="100" Margin="12,0,9,0" Source="{Binding ImagePath}"/>

正如您所说,您有项目列表(我认为这将是也具有图像路径的类),因此在此类中创建此属性,并且对于每个项目,将路径放入此属性中以用于对应的项目。

private string _ImagePath;
public string ImagePath
{
   get
   {
     return _ImagePath;
   }
   set
   {
    _imagePath = value;

   }
}

如果您在项目类中实现 INotifyPropertyChanged 会更好。

于 2013-07-10T09:24:44.020 回答
0

我不认为绑定是这样工作的。如果无法将字符串"/AlbumArt/"添加到您的图像路径属性(即AlbumArt),我建议使用转换器来执行此操作。

此外,格式化字符串仅在目标属性是字符串时才有效,因此 StringFormat 不可用。如果我对 StringFormat 有误,请有人纠正我

于 2013-07-10T08:57:34.127 回答
0

If you have binding issues always check the output window for details. That is where information about binding errors is displayed.

This Source="/AlbumArt/{Binding AlbumArt}" won't work because it will just be treated as a string.

Without seeing your class it's hard to be certain but the property you're binding to ("AlbumArt") should be a Uri and not a string and it should be populated with a relative Uri to the image. That image should also be set to having the build action of Content.

于 2013-07-10T09:00:48.723 回答
0

如何变得更加嵌套。

private string _AlbumArt;
public string AlbumArt
{
   get
   {
     return _AlbumArt;
   }
   set
   {
if(_AlbumArt!=null)
    _AlbumArt=@"/AlbumArt/"+ value;

   }
}

和绑定

<Image Height="100" Width="100" Margin="12,0,9,0" Source="{Binding AlbumArt}"/>
于 2013-07-10T10:09:29.930 回答